문서를 영문으로 보려면 영문 확인란을 선택하세요. 마우스 포인터를 텍스트 위로 이동시켜 팝업 창에서 영문 텍스트를 표시할 수도 있습니다.
번역
영문
이 설명서는 보관되지만 유지 되지 않습니다.

맞춤, 여백 및 안쪽 여백 개요

FrameworkElement 클래스는 자식 요소의 위치를 정확하게 지정하는 데 사용되는 여러 속성을 노출합니다. 이 항목에서는 가장 중요한 네 가지 속성인 HorizontalAlignment, Margin, PaddingVerticalAlignment에 대해 설명합니다. 이러한 속성은 Windows Presentation Foundation (WPF) 응용 프로그램에서 요소의 위치를 제어하는 기본적인 방법을 제공하므로 이러한 속성이 미치는 효과를 이해해야 합니다.

이 항목에는 다음 단원이 포함되어 있습니다.

WPF를 사용하여 요소 위치를 지정하는 방법은 여러 가지가 있습니다. 하지만 이상적인 레이아웃을 얻으려면 올바른 Panel 요소를 선택하는 것만으로는 부족합니다. 컨트롤 위치를 정밀하게 지정하려면 HorizontalAlignment, Margin, PaddingVerticalAlignment 속성을 이해해야 합니다.

다음 그림에서는 몇 가지 위치 지정 속성을 사용하는 레이아웃 시나리오를 보여 줍니다.

WPF 위치 지정 속성 샘플

얼핏 보기에는 이 그림에서 Button 요소가 임의로 위치가 지정되는 것으로 보이지만, 실제로는 여백, 맞춤 및 안쪽 여백을 조합하여 사용하여 해당 위치가 정밀하게 제어된 것입니다.

다음 예제에서는 위 그림의 레이아웃을 만드는 방법에 대해 설명합니다. Border 요소는 Padding 값을 15 장치 독립적 픽셀로 하여 부모 StackPanel을 캡슐화합니다. 이것은 자식 StackPanel을 둘러싸는 좁은 LightBlue 밴드를 고려한 것입니다. 이 항목에서 자세히 설명하는 다양한 위치 지정 속성 각각을 설명하기 위해 StackPanel의 자식 요소를 사용합니다. 또한 MarginHorizontalAlignment 속성 모두를 설명하기 위해 Button 요소 세 개를 사용합니다.



            // Create the application's main Window.
            mainWindow = new Window ();
            mainWindow.Title = "Margins, Padding and Alignment Sample";

            // Add a Border
            myBorder = new Border();
            myBorder.Background = Brushes.LightBlue;
            myBorder.BorderBrush = Brushes.Black;
            myBorder.Padding = new Thickness(15);
            myBorder.BorderThickness = new Thickness(2);

            myStackPanel = new StackPanel();
            myStackPanel.Background = Brushes.White;
            myStackPanel.HorizontalAlignment = HorizontalAlignment.Center;
            myStackPanel.VerticalAlignment = VerticalAlignment.Top;

            TextBlock myTextBlock = new TextBlock();
            myTextBlock.Margin = new Thickness(5, 0, 5, 0);
            myTextBlock.FontSize = 18;
            myTextBlock.HorizontalAlignment = HorizontalAlignment.Center;
            myTextBlock.Text = "Alignment, Margin and Padding Sample";
            Button myButton1 = new Button();
            myButton1.HorizontalAlignment = HorizontalAlignment.Left;
            myButton1.Margin = new Thickness(20);
            myButton1.Content = "Button 1";
            Button myButton2 = new Button();
            myButton2.HorizontalAlignment = HorizontalAlignment.Right;
            myButton2.Margin = new Thickness(10);
            myButton2.Content = "Button 2";
            Button myButton3 = new Button();
            myButton3.HorizontalAlignment = HorizontalAlignment.Stretch;
            myButton3.Margin = new Thickness(0);
            myButton3.Content = "Button 3";

            // Add child elements to the parent StackPanel.
            myStackPanel.Children.Add(myTextBlock);
            myStackPanel.Children.Add(myButton1);
            myStackPanel.Children.Add(myButton2);
            myStackPanel.Children.Add(myButton3);

            // Add the StackPanel as the lone Child of the Border.
            myBorder.Child = myStackPanel;

            // Add the Border as the Content of the Parent Window Object.
            mainWindow.Content = myBorder;
            mainWindow.Show ();




<Page xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" WindowTitle="Margins, Padding and Alignment Sample">
  <Border Background="LightBlue" BorderBrush="Black" BorderThickness="2" Padding="15">
    <StackPanel Background="White" HorizontalAlignment="Center" VerticalAlignment="Top">
        <TextBlock Margin="5,0,5,0" FontSize="18" HorizontalAlignment="Center">Alignment, Margin and Padding Sample</TextBlock>
        <Button HorizontalAlignment="Left" Margin="20">Button 1</Button>
        <Button HorizontalAlignment="Right" Margin="10">Button 2</Button>
        <Button HorizontalAlignment="Stretch" Margin="0">Button 3</Button>
    </StackPanel> 
  </Border>    
</Page>


다음 다이어그램에서는 위 샘플에 사용된 다양한 위치 지정 속성을 자세히 보여 줍니다. 이 항목의 이후 단원에서는 각 위치 지정 속성을 사용하는 방법에 대해 자세히 설명합니다.

화면 호출을 사용하는 위치 지정 속성

HorizontalAlignment VerticalAlignment 속성은 부모 요소의 할당된 레이아웃 공간 내에서 자식 요소의 위치가 어떻게 지정되어야 하는지를 설명합니다. 이러한 속성을 함께 사용하면 자식 요소 위치를 정확하게 지정할 수 있습니다. 예를 들어 DockPanel의 자식 요소에서 Left, Right, Center 또는 사용 가능한 공간을 채우는 Stretch의 네 가지 가로 맞춤 속성을 지정할 수 있습니다. 세로 위치 지정에도 유사한 값을 사용할 수 있습니다.

참고참고

요소에서 명시적으로 설정된 HeightWidth 속성은 Stretch 속성 값보다 우선합니다. Height , WidthHorizontalAlignment 값을 Stretch로 설정하려고 하면 Stretch 요청이 무시됩니다.

HorizontalAlignment 속성

HorizontalAlignment 속성은 자식 요소에 적용할 가로 맞춤 특성을 선언합니다. 다음 표에서는 HorizontalAlignment 속성에 사용할 수 있는 값을 보여 줍니다.

멤버

설명

Left

자식 요소를 부모 요소에 할당된 레이아웃 공간의 왼쪽에 맞춥니다.

Center

자식 요소를 부모 요소에 할당된 레이아웃 공간의 가운데에 맞춥니다.

Right

자식 요소를 부모 요소에 할당된 레이아웃 공간의 오른쪽에 맞춥니다.

Stretch (기본값)

자식 요소를 늘여 부모 요소에 할당된 레이아웃 공간을 채웁니다. 명시적인 WidthHeight 값이 우선 적용됩니다.

다음 예제에서는 Button 요소에 HorizontalAlignment 속성을 적용하는 방법을 보여 줍니다. 다양한 렌더링 동작을 보다 잘 설명하기 위해 각각의 특성 값이 표시되어 있습니다.


Button myButton1 = new Button();
myButton1.HorizontalAlignment = HorizontalAlignment.Left;
myButton1.Content = "Button 1 (Left)";
Button myButton2 = new Button();
myButton2.HorizontalAlignment = HorizontalAlignment.Right;
myButton2.Content = "Button 2 (Right)";
Button myButton3 = new Button();
myButton3.HorizontalAlignment = HorizontalAlignment.Center;
myButton3.Content = "Button 3 (Center)";
Button myButton4 = new Button();
myButton4.HorizontalAlignment = HorizontalAlignment.Stretch;
myButton4.Content = "Button 4 (Stretch)";



<Page xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" WindowTitle="HorizontalAlignment Sample">
  <Border Background="LightBlue" BorderBrush="Black" BorderThickness="2" Padding="15">
    <StackPanel Background="White" HorizontalAlignment="Center" VerticalAlignment="Top">
        <TextBlock Margin="5,0,5,0" FontSize="18" HorizontalAlignment="Center">HorizontalAlignment Sample</TextBlock>
    <Button HorizontalAlignment="Left">Button 1 (Left)</Button>
    <Button HorizontalAlignment="Right">Button 2 (Right)</Button>
    <Button HorizontalAlignment="Center">Button 3 (Center)</Button>
    <Button HorizontalAlignment="Stretch">Button 4 (Stretch)</Button>

    </StackPanel> 
  </Border>    
</Page>


위의 코드는 다음 이미지와 유사한 레이아웃을 만듭니다. HorizontalAlignment 값의 위치 지정 효과는 그림에 표시되어 있습니다.

HorizontalAlignment 샘플

VerticalAlignment 속성

VerticalAlignment 속성은 자식 요소에 적용할 세로 맞춤 특성을 설명합니다. 다음 표에서는 VerticalAlignment 속성에 사용할 수 있는 값을 보여 줍니다.

멤버

설명

Top

자식 요소를 부모 요소에 할당된 레이아웃 공간의 위쪽에 맞춥니다.

Center

자식 요소를 부모 요소에 할당된 레이아웃 공간의 가운데에 맞춥니다.

Bottom

자식 요소를 부모 요소에 할당된 레이아웃 공간의 아래쪽에 맞춥니다.

Stretch (기본값)

자식 요소를 늘여 부모 요소에 할당된 레이아웃 공간을 채웁니다. 명시적인 WidthHeight 값이 우선 적용됩니다.

다음 예제에서는 Button 요소에 VerticalAlignment 속성을 적용하는 방법을 보여 줍니다. 다양한 렌더링 동작을 보다 잘 설명하기 위해 각각의 특성 값이 표시되어 있습니다. 이 샘플의 목적에 맞게 각 속성 값의 레이아웃 동작을 보다 잘 설명하기 위해 모눈선이 표시된 상태로 Grid 요소가 부모로 사용됩니다.


TextBlock myTextBlock = new TextBlock();
myTextBlock.FontSize = 18;
myTextBlock.HorizontalAlignment = HorizontalAlignment.Center;
myTextBlock.Text = "VerticalAlignment Sample";
Grid.SetRow(myTextBlock, 0);
Button myButton1 = new Button();
myButton1.VerticalAlignment = VerticalAlignment.Top;
myButton1.Content = "Button 1 (Top)";
Grid.SetRow(myButton1, 1);
Button myButton2 = new Button();
myButton2.VerticalAlignment = VerticalAlignment.Bottom;
myButton2.Content = "Button 2 (Bottom)";
Grid.SetRow(myButton2, 2);
Button myButton3 = new Button();
myButton3.VerticalAlignment = VerticalAlignment.Center;
myButton3.Content = "Button 3 (Center)";
Grid.SetRow(myButton3, 3);
Button myButton4 = new Button();
myButton4.VerticalAlignment = VerticalAlignment.Stretch;
myButton4.Content = "Button 4 (Stretch)";
Grid.SetRow(myButton4, 4);



<Page xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
      WindowTitle="VerticalAlignment Sample">
  <Border Background="LightBlue" BorderBrush="Black" BorderThickness="2" Padding="15">
    <Grid Background="White" ShowGridLines="True">
      <Grid.RowDefinitions>
        <RowDefinition Height="25"/>
        <RowDefinition Height="50"/>
        <RowDefinition Height="50"/>
        <RowDefinition Height="50"/>
        <RowDefinition Height="50"/>
      </Grid.RowDefinitions>
            <TextBlock Grid.Row="0" Grid.Column="0" FontSize="18" HorizontalAlignment="Center">VerticalAlignment Sample</TextBlock>
            <Button Grid.Row="1" Grid.Column="0" VerticalAlignment="Top">Button 1 (Top)</Button>
            <Button Grid.Row="2" Grid.Column="0" VerticalAlignment="Bottom">Button 2 (Bottom)</Button>    
            <Button Grid.Row="3" Grid.Column="0" VerticalAlignment="Center">Button 3 (Center)</Button>
            <Button Grid.Row="4" Grid.Column="0" VerticalAlignment="Stretch">Button 4 (Stretch)</Button>          
    </Grid>
  </Border>    
</Page>


위의 코드는 다음 이미지와 유사한 레이아웃을 만듭니다. VerticalAlignment 값의 위치 지정 효과는 그림에 표시되어 있습니다.

VerticalAlignment 속성 샘플

Margin 속성은 요소와 해당 자식 또는 피어 간의 거리를 설명합니다. Margin="20"과 같은 구문을 사용하면 Margin 값을 일정하게 만들 수 있습니다. 이 구문을 사용하면 20 장치 독립적 픽셀의 일정한 Margin을 요소에 적용할 수 있습니다. Margin 값은 서로 다른 네 가지 값으로 이루어진 형태가 될 수 있으며 이 경우 각각의 값은 왼쪽, 위쪽, 오른쪽 및 아래쪽(순서대로)에 적용할 여백을 나타냅니다(예: Margin="0,10,5,25"). Margin 속성을 올바르게 사용하면 요소의 렌더링 위치와 인접 요소 및 자식의 렌더링 위치를 정밀하게 제어할 수 있습니다.

참고참고

0이 아닌 여백은 요소의 ActualWidthActualHeight 바깥쪽에 공간을 만듭니다.

다음 예제에서는 Button 요소 그룹에 균일한 여백을 적용하는 방법을 보여 줍니다. 즉, 모든 Button 요소가 각 방향에 10픽셀의 여백을 두고 일정하게 배치됩니다.


Button myButton7 = new Button();
myButton7.Margin = new Thickness(10);
myButton7.Content = "Button 7";
Button myButton8 = new Button();
myButton8.Margin = new Thickness(10);
myButton8.Content = "Button 8";
Button myButton9 = new Button();
myButton9.Margin = new Thickness(10);
myButton9.Content = "Button 9";



<Button Margin="10">Button 7</Button>
<Button Margin="10">Button 8</Button>
<Button Margin="10">Button 9</Button>


여백을 균일하게 설정하는 것이 적합하지 않은 경우가 많습니다. 이런 경우에는 균일하지 않은 여백을 적용할 수 있습니다. 다음 예제에서는 자식 요소에 균일하지 않은 여백을 적용하는 방법을 보여 줍니다. 여백은 왼쪽, 위쪽, 오른쪽, 아래쪽의 순서로 기술되어 있습니다.


Button myButton1 = new Button();
myButton1.Margin = new Thickness(0, 10, 0, 10);
myButton1.Content = "Button 1";
Button myButton2 = new Button();
myButton2.Margin = new Thickness(0, 10, 0, 10);
myButton2.Content = "Button 2";
Button myButton3 = new Button();
myButton3.Margin = new Thickness(0, 10, 0, 10);



<Button Margin="0,10,0,10">Button 1</Button>
<Button Margin="0,10,0,10">Button 2</Button>
<Button Margin="0,10,0,10">Button 3</Button>


안쪽 여백은 많은 점에서 Margin과 유사합니다. 하지만 소수의 클래스만 주로 편의성을 위해 Padding 속성을 노출합니다. Block, Border, ControlTextBlock이 Padding 속성을 노출하는 클래스의 예입니다. Padding 속성은 자식 요소의 유효 크기를 지정된 Thickness 값만큼 확장합니다.

다음 예제에서는 Padding을 부모 Border 요소에 적용하는 방법을 보여 줍니다.


myBorder = new Border();
myBorder.Background = Brushes.LightBlue;
myBorder.BorderBrush = Brushes.Black;
myBorder.BorderThickness = new Thickness(2);
myBorder.CornerRadius = new CornerRadius(45);
myBorder.Padding = new Thickness(25);



<Border Background="LightBlue" 
        BorderBrush="Black" 
        BorderThickness="2" 
        CornerRadius="45" 
        Padding="25">


HorizontalAlignment , Margin, PaddingVerticalAlignment는 복잡한 user interface (UI)를 만드는 데 필요한 위치 지정 컨트롤을 제공합니다. 각 속성의 효과를 활용하여 자식 요소의 위치를 지정하면 동적 응용 프로그램 및 사용자 환경을 쉽게 만들 수 있습니다.

다음 예제에서는 이 항목에서 자세히 설명하는 각각의 개념에 대해 보여 줍니다. 이 예제에서는 이 항목의 첫 번째 샘플에 나와 있는 구조를 기반으로 하여 Grid 요소를 첫 번째 샘플에 있는 Border의 자식으로 추가하고 Padding 을 부모 Border 요소에 적용합니다. 또한 자식 StackPanel 요소 세 개 사이에 있는 공간을 분할하기 위해 Grid를 사용하며 Margin HorizontalAlignment의 다양한 효과를 보여 주기 위해 Button 요소를 다시 사용합니다. 각 열의 Button 요소에 적용할 다양한 속성을 더욱 쉽게 정의하기 위해 TextBlock 요소를 각 ColumnDefinition에 추가합니다.


mainWindow = new Window();

myBorder = new Border();
myBorder.Background = Brushes.LightBlue;
myBorder.BorderBrush = Brushes.Black;
myBorder.BorderThickness = new Thickness(2);
myBorder.CornerRadius = new CornerRadius(45);
myBorder.Padding = new Thickness(25);

// Define the Grid.
myGrid = new Grid();
myGrid.Background = Brushes.White;
myGrid.ShowGridLines = true;

// Define the Columns.
ColumnDefinition myColDef1 = new ColumnDefinition();
myColDef1.Width = new GridLength(1, GridUnitType.Auto);
ColumnDefinition myColDef2 = new ColumnDefinition();
myColDef2.Width = new GridLength(1, GridUnitType.Star);
ColumnDefinition myColDef3 = new ColumnDefinition();
myColDef3.Width = new GridLength(1, GridUnitType.Auto);

// Add the ColumnDefinitions to the Grid.
myGrid.ColumnDefinitions.Add(myColDef1);
myGrid.ColumnDefinitions.Add(myColDef2);
myGrid.ColumnDefinitions.Add(myColDef3);

// Add the first child StackPanel.
StackPanel myStackPanel = new StackPanel();
myStackPanel.HorizontalAlignment = HorizontalAlignment.Left;
myStackPanel.VerticalAlignment = VerticalAlignment.Top;
Grid.SetColumn(myStackPanel, 0);
Grid.SetRow(myStackPanel, 0);
TextBlock myTextBlock1 = new TextBlock();
myTextBlock1.FontSize = 18;
myTextBlock1.HorizontalAlignment = HorizontalAlignment.Center;
myTextBlock1.Margin = new Thickness(0, 0, 0, 15);
myTextBlock1.Text = "StackPanel 1";
Button myButton1 = new Button();
myButton1.Margin = new Thickness(0, 10, 0, 10);
myButton1.Content = "Button 1";
Button myButton2 = new Button();
myButton2.Margin = new Thickness(0, 10, 0, 10);
myButton2.Content = "Button 2";
Button myButton3 = new Button();
myButton3.Margin = new Thickness(0, 10, 0, 10);
TextBlock myTextBlock2 = new TextBlock();
myTextBlock2.Text = @"ColumnDefinition.Width = ""Auto""";
TextBlock myTextBlock3 = new TextBlock();
myTextBlock3.Text = @"StackPanel.HorizontalAlignment = ""Left""";
TextBlock myTextBlock4 = new TextBlock();
myTextBlock4.Text = @"StackPanel.VerticalAlignment = ""Top""";
TextBlock myTextBlock5 = new TextBlock();
myTextBlock5.Text = @"StackPanel.Orientation = ""Vertical""";
TextBlock myTextBlock6 = new TextBlock();
myTextBlock6.Text = @"Button.Margin = ""1,10,0,10""";
myStackPanel.Children.Add(myTextBlock1);
myStackPanel.Children.Add(myButton1);
myStackPanel.Children.Add(myButton2);
myStackPanel.Children.Add(myButton3);
myStackPanel.Children.Add(myTextBlock2);
myStackPanel.Children.Add(myTextBlock3);
myStackPanel.Children.Add(myTextBlock4);
myStackPanel.Children.Add(myTextBlock5);
myStackPanel.Children.Add(myTextBlock6);

// Add the second child StackPanel.
StackPanel myStackPanel2 = new StackPanel();
myStackPanel2.HorizontalAlignment = HorizontalAlignment.Stretch;
myStackPanel2.VerticalAlignment = VerticalAlignment.Top;
myStackPanel2.Orientation = Orientation.Vertical;
Grid.SetColumn(myStackPanel2, 1);
Grid.SetRow(myStackPanel2, 0);
TextBlock myTextBlock7 = new TextBlock();
myTextBlock7.FontSize = 18;
myTextBlock7.HorizontalAlignment = HorizontalAlignment.Center;
myTextBlock7.Margin = new Thickness(0, 0, 0, 15);
myTextBlock7.Text = "StackPanel 2";
Button myButton4 = new Button();
myButton4.Margin = new Thickness(10, 0, 10, 0);
myButton4.Content = "Button 4";
Button myButton5 = new Button();
myButton5.Margin = new Thickness(10, 0, 10, 0);
myButton5.Content = "Button 5";
Button myButton6 = new Button();
myButton6.Margin = new Thickness(10, 0, 10, 0);
myButton6.Content = "Button 6";
TextBlock myTextBlock8 = new TextBlock();
myTextBlock8.HorizontalAlignment = HorizontalAlignment.Center;
myTextBlock8.Text = @"ColumnDefinition.Width = ""*""";
TextBlock myTextBlock9 = new TextBlock();
myTextBlock9.HorizontalAlignment = HorizontalAlignment.Center;
myTextBlock9.Text = @"StackPanel.HorizontalAlignment = ""Stretch""";
TextBlock myTextBlock10 = new TextBlock();
myTextBlock10.HorizontalAlignment = HorizontalAlignment.Center;
myTextBlock10.Text = @"StackPanel.VerticalAlignment = ""Top""";
TextBlock myTextBlock11 = new TextBlock();
myTextBlock11.HorizontalAlignment = HorizontalAlignment.Center;
myTextBlock11.Text = @"StackPanel.Orientation = ""Horizontal""";
TextBlock myTextBlock12 = new TextBlock();
myTextBlock12.HorizontalAlignment = HorizontalAlignment.Center;
myTextBlock12.Text = @"Button.Margin = ""10,0,10,0""";
myStackPanel2.Children.Add(myTextBlock7);
myStackPanel2.Children.Add(myButton4);
myStackPanel2.Children.Add(myButton5);
myStackPanel2.Children.Add(myButton6);
myStackPanel2.Children.Add(myTextBlock8);
myStackPanel2.Children.Add(myTextBlock9);
myStackPanel2.Children.Add(myTextBlock10);
myStackPanel2.Children.Add(myTextBlock11);
myStackPanel2.Children.Add(myTextBlock12);

// Add the final child StackPanel.
StackPanel myStackPanel3 = new StackPanel();
myStackPanel3.HorizontalAlignment = HorizontalAlignment.Left;
myStackPanel3.VerticalAlignment = VerticalAlignment.Top;
Grid.SetColumn(myStackPanel3, 2);
Grid.SetRow(myStackPanel3, 0);
TextBlock myTextBlock13 = new TextBlock();
myTextBlock13.FontSize = 18;
myTextBlock13.HorizontalAlignment = HorizontalAlignment.Center;
myTextBlock13.Margin = new Thickness(0, 0, 0, 15);
myTextBlock13.Text = "StackPanel 3";
Button myButton7 = new Button();
myButton7.Margin = new Thickness(10);
myButton7.Content = "Button 7";
Button myButton8 = new Button();
myButton8.Margin = new Thickness(10);
myButton8.Content = "Button 8";
Button myButton9 = new Button();
myButton9.Margin = new Thickness(10);
myButton9.Content = "Button 9";
TextBlock myTextBlock14 = new TextBlock();
myTextBlock14.Text = @"ColumnDefinition.Width = ""Auto""";
TextBlock myTextBlock15 = new TextBlock();
myTextBlock15.Text = @"StackPanel.HorizontalAlignment = ""Left""";
TextBlock myTextBlock16 = new TextBlock();
myTextBlock16.Text = @"StackPanel.VerticalAlignment = ""Top""";
TextBlock myTextBlock17 = new TextBlock();
myTextBlock17.Text = @"StackPanel.Orientation = ""Vertical""";
TextBlock myTextBlock18 = new TextBlock();
myTextBlock18.Text = @"Button.Margin = ""10""";
myStackPanel3.Children.Add(myTextBlock13);
myStackPanel3.Children.Add(myButton7);
myStackPanel3.Children.Add(myButton8);
myStackPanel3.Children.Add(myButton9);
myStackPanel3.Children.Add(myTextBlock14);
myStackPanel3.Children.Add(myTextBlock15);
myStackPanel3.Children.Add(myTextBlock16);
myStackPanel3.Children.Add(myTextBlock17);
myStackPanel3.Children.Add(myTextBlock18);

// Add child content to the parent Grid.
myGrid.Children.Add(myStackPanel);
myGrid.Children.Add(myStackPanel2);
myGrid.Children.Add(myStackPanel3);

// Add the Grid as the lone child of the Border.
myBorder.Child = myGrid;

// Add the Border to the Window as Content and show the Window.
mainWindow.Content = myBorder;
mainWindow.Title = "Margin, Padding, and Alignment Sample";
mainWindow.Show();



<Page xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" WindowTitle="Margins, Padding and Alignment Sample">
  <Border Background="LightBlue" 
          BorderBrush="Black" 
          BorderThickness="2" 
          CornerRadius="45" 
          Padding="25">
    <Grid Background="White" ShowGridLines="True">
      <Grid.ColumnDefinitions>
        <ColumnDefinition Width="Auto"/>
        <ColumnDefinition Width="*"/>
        <ColumnDefinition Width="Auto"/>
      </Grid.ColumnDefinitions>

    <StackPanel Grid.Column="0" Grid.Row="0" HorizontalAlignment="Left" Name="StackPanel1" VerticalAlignment="Top">
        <TextBlock FontSize="18" HorizontalAlignment="Center" Margin="0,0,0,15">StackPanel1</TextBlock>
        <Button Margin="0,10,0,10">Button 1</Button>
        <Button Margin="0,10,0,10">Button 2</Button>
        <Button Margin="0,10,0,10">Button 3</Button>
        <TextBlock>ColumnDefinition.Width="Auto"</TextBlock>
        <TextBlock>StackPanel.HorizontalAlignment="Left"</TextBlock>
        <TextBlock>StackPanel.VerticalAlignment="Top"</TextBlock>
        <TextBlock>StackPanel.Orientation="Vertical"</TextBlock>
        <TextBlock>Button.Margin="0,10,0,10"</TextBlock>
    </StackPanel>

    <StackPanel Grid.Column="1" Grid.Row="0" HorizontalAlignment="Stretch" Name="StackPanel2" VerticalAlignment="Top" Orientation="Vertical">
        <TextBlock FontSize="18" HorizontalAlignment="Center" Margin="0,0,0,15">StackPanel2</TextBlock>
        <Button Margin="10,0,10,0">Button 4</Button>
        <Button Margin="10,0,10,0">Button 5</Button>
        <Button Margin="10,0,10,0">Button 6</Button>
        <TextBlock HorizontalAlignment="Center">ColumnDefinition.Width="*"</TextBlock>
        <TextBlock HorizontalAlignment="Center">StackPanel.HorizontalAlignment="Stretch"</TextBlock>
        <TextBlock HorizontalAlignment="Center">StackPanel.VerticalAlignment="Top"</TextBlock>
        <TextBlock HorizontalAlignment="Center">StackPanel.Orientation="Horizontal"</TextBlock>
        <TextBlock HorizontalAlignment="Center">Button.Margin="10,0,10,0"</TextBlock>
    </StackPanel>        

    <StackPanel Grid.Column="2" Grid.Row="0" HorizontalAlignment="Left" Name="StackPanel3" VerticalAlignment="Top">
        <TextBlock FontSize="18" HorizontalAlignment="Center" Margin="0,0,0,15">StackPanel3</TextBlock>
        <Button Margin="10">Button 7</Button>
        <Button Margin="10">Button 8</Button>
        <Button Margin="10">Button 9</Button>
        <TextBlock>ColumnDefinition.Width="Auto"</TextBlock>
        <TextBlock>StackPanel.HorizontalAlignment="Left"</TextBlock>
        <TextBlock>StackPanel.VerticalAlignment="Top"</TextBlock>
        <TextBlock>StackPanel.Orientation="Vertical"</TextBlock>
        <TextBlock>Button.Margin="10"</TextBlock>      
    </StackPanel>
  </Grid>
  </Border>    
</Page>


위 응용 프로그램을 컴파일하면 다음 그림과 같은 UI가 생성됩니다. 다양한 속성 값의 효과는 요소 사이의 간격을 통해 확인할 수 있으며 각 열에서 요소의 중요한 속성 값은 TextBlock 요소에 표시되어 있습니다.

하나의 응용 프로그램에서 여러 위치 지정 속성

FrameworkElement 클래스로 정의되는 위치 지정 속성을 사용하면 WPF 응용 프로그램 내에서 요소 배치를 정밀하게 제어할 수 있습니다. 이제 WPF를 사용하여 더욱 쉽게 요소 위치를 지정할 수 있는 몇 가지 기술을 사용할 수 있습니다.

WPF 레이아웃에 대해 자세히 설명하는 추가 리소스가 있습니다. Panel 개요 항목에서는 다양한 Panel 요소에 대해 자세히 설명하고 연습: WPF 시작 항목에서는 레이아웃 요소를 사용하여 구성 요소 위치를 지정하고 해당 동작을 데이터 소스에 바인딩하는 고급 기법을 소개합니다.

표시: