자동 레이아웃 사용 개요
업데이트: 2007년 11월
이 항목에서는 지역화할 수 있는 UI(사용자 인터페이스)를 사용하여 WPF(Windows Presentation Foundation) 응용 프로그램을 작성하는 방법에 대한 개발자용 지침을 소개합니다. 이전에는 UI의 지역화 작업이 시간이 많이 소요되는 프로세스였습니다. 이전에는 UI가 조정되는 각 언어에 대해 픽셀 단위의 조정이 필요했지만 이제는 올바른 디자인 및 코딩 표준을 사용하여 UI를 생성할 때 지역화 작업자가 크기 및 위치 조정 작업을 보다 적게 수행할 수 있게 되었습니다. 보다 쉽게 크기 및 위치를 조정할 수 있는 응용 프로그램을 작성하는 방법을 자동 레이아웃이라고 하며 이는 WPF 응용 프로그램 디자인을 통해 구현할 수 있습니다.
이 항목에는 다음 단원이 포함되어 있습니다.
자동 레이아웃 사용의 이점
자동 레이아웃 및 컨트롤
자동 레이아웃 및 코딩 표준
자동 레이아웃 및 모눈
IsSharedSizeScope 속성을 사용한 자동 레이아웃 및 모눈
관련 항목
자동 레이아웃 사용의 이점
WPF 프레젠테이션 시스템은 강력하고 유연하므로 서로 다른 언어의 요구 사항을 충족시킬 수 있도록 조정될 수 있는 응용 프로그램에서의 요소 레이아웃 기능을 제공합니다. 다음 목록에서는 일부 자동 레이아웃의 장점을 보여 줍니다.
UI가 모든 언어에서 잘 표시됩니다.
텍스트가 변환된 후 컨트롤의 위치와 크기를 다시 조정할 필요가 줄어듭니다.
창 크기를 다시 조정할 필요가 줄어듭니다.
UI 레이아웃이 모든 언어에서 적절하게 렌더링됩니다.
문자열을 변환하는 정도로만 지역화를 수행할 수 있습니다.
자동 레이아웃 및 컨트롤
자동 레이아웃을 통해 응용 프로그램은 컨트롤 크기를 자동으로 조정할 수 있습니다. 예를 들어 컨트롤은 문자열 길이를 수용하도록 변경될 수 있습니다. 이러한 기능을 통해 지역화 작업자는 문자열을 변환할 때, 변환된 텍스트에 맞게 컨트롤 크기를 다시 조정하지 않아도 됩니다. 다음 예제에서는 영어 콘텐츠의 단추를 만듭니다.
<Window
xmlns="https://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="https://schemas.microsoft.com/winfx/2006/xaml"
x:Class="ButtonLoc.Pane1"
Name="myWindow"
SizeToContent="WidthAndHeight"
>
<DockPanel>
<Button FontSize="28" Height="50">My name is Hope.</Button>
</DockPanel>
</Window>
이 예제에서 스페인어 단추를 만들려면 텍스트를 바꿔 주기만 하면 됩니다. 예를 들면 다음과 같습니다.
<Window
xmlns="https://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="https://schemas.microsoft.com/winfx/2006/xaml"
x:Class="ButtonLoc.Pane1"
Name="myWindow"
SizeToContent="WidthAndHeight"
>
<DockPanel>
<Button FontSize="28" Height="50">Me llamo Esperanza.</Button>
</DockPanel>
</Window>
다음 그래픽에서는 코드 샘플의 출력을 보여 줍니다.
자동 크기 조정 단추
참고
앞의 예제를 추출한 전체 샘플을 보려면 지역화할 수 있는 응용 프로그램을 위한 자동 레이아웃 샘플을 참조하십시오.
자동 레이아웃 및 코딩 표준
자동 레이아웃 방법을 사용하려면 완전히 지역화할 수 있는 UI를 생성할 수 있는 코딩 및 디자인 표준/규칙 집합이 필요합니다. 다음 지침은 자동 레이아웃 코딩에 도움이 됩니다.
코딩 표준 |
설명 |
---|---|
절대 위치를 사용하지 않습니다. |
|
창에 고정 크기를 설정하지 않습니다. |
|
FlowDirection을 추가합니다. |
|
실제 글꼴 대신 합성 글꼴을 사용합니다. |
|
xml:lang을 추가합니다. |
|
자동 레이아웃 및 모눈
Grid 요소는 개발자가 요소 위치를 지정하는 데 사용할 수 있으므로 자동 레이아웃에 유용합니다. Grid 컨트롤을 사용하면 열과 행에 정렬되고 각 셀에 UI 요소를 배치하는 자식 요소 간에 사용 가능한 공간을 분배할 수 있습니다. UI 요소는 여러 셀에 걸쳐 배치될 수 있으며 모눈 안에 모눈을 사용할 수 있습니다. 모눈은 복잡한 UI를 만들고 배치하는 데 사용할 수 있으므로 유용합니다. 다음 예제에서는 모눈을 사용하여 일부 단추 및 텍스트를 배치하는 방법을 보여 줍니다. 셀의 높이와 너비가 Auto로 설정되어 있으므로 이미지가 있는 단추를 포함하는 셀은 이미지에 맞춰 조정됩니다.
<Grid Name="grid" ShowGridLines ="false">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<TextBlock Margin="10, 10, 5, 5" Grid.Column="0" Grid.Row="0" FontSize="24">Grid
</TextBlock>
<TextBlock Margin="10, 10, 5, 5" Grid.Column="0" Grid.Row="1" FontSize="12"
Grid.ColumnSpan="2">The following buttons and text are positioned using a Grid.
</TextBlock>
<Button Margin="10, 10, 5, 5" Grid.Column="0" Grid.Row="2" Background="Pink"
BorderBrush="Black" BorderThickness="10">Button 1
</Button>
<TextBlock Margin="10, 10, 5, 5" Grid.Column="1" Grid.Row="2" FontSize="12"
VerticalAlignment="Center" TextWrapping="WrapWithOverflow">Sets the background
color.
</TextBlock>
<Button Margin="10, 10, 5, 5" Grid.Column="0" Grid.Row="3" Foreground="Red">
Button 2
</Button>
<TextBlock Margin="10, 10, 5, 5" Grid.Column="1" Grid.Row="3" FontSize="12"
VerticalAlignment="Center" TextWrapping="WrapWithOverflow">Sets the foreground
color.
</TextBlock>
<Button Margin="10, 10, 5, 5" Grid.Column="0" Grid.Row="4">
<Image Source="data\flower.jpg"></Image>
</Button>
<TextBlock Margin="10, 10, 5, 5" Grid.Column="1" Grid.Row="4" FontSize="12"
VerticalAlignment="Center" TextWrapping="WrapWithOverflow">Adds an image as
the button's content.
</TextBlock>
</Grid>
다음 그래픽에서는 이전 코드에서 만든 모눈을 보여 줍니다.
모눈
참고
전체 코드 샘플을 보려면 지역화할 수 있는 응용 프로그램을 위한 모눈 샘플을 참조하십시오.
IsSharedSizeScope 속성을 사용한 자동 레이아웃 및 모눈
모눈은 지역화할 수 있는 응용 프로그램에서 콘텐츠에 맞게 조정되는 컨트롤을 만드는 데 유용합니다. 그러나 콘텐츠에 관계없이 특정 크기로 컨트롤을 유지하려는 경우도 있습니다. 예를 들어 "확인", "취소" 및 "찾아보기" 단추가 있는 경우 콘텐츠에 맞게 단추 크기를 조정할 필요가 없을 것입니다. 이 경우 Grid 요소의 IsSharedSizeScope 연결 속성을 사용하면 여러 모눈 요소 간에 동일한 크기를 공유할 수 있습니다. 다음 예제에서는 여러 Grid 요소 간에 열과 행 크기 조정 데이터를 공유하는 방법을 보여 줍니다.
<StackPanel Orientation="Horizontal" DockPanel.Dock="Top">
<Button Click="setTrue" Margin="0,0,10,10">Set IsSharedSizeScope="True"</Button>
<Button Click="setFalse" Margin="0,0,10,10">Set IsSharedSizeScope="False"</Button>
</StackPanel>
<StackPanel Orientation="Horizontal" DockPanel.Dock="Top">
<Grid ShowGridLines="True" Margin="0,0,10,0">
<Grid.ColumnDefinitions>
<ColumnDefinition SharedSizeGroup="FirstColumn"/>
<ColumnDefinition SharedSizeGroup="SecondColumn"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" SharedSizeGroup="FirstRow"/>
</Grid.RowDefinitions>
<Rectangle Fill="Silver" Grid.Column="0" Grid.Row="0" Width="200" Height="100"/>
<Rectangle Fill="Blue" Grid.Column="1" Grid.Row="0" Width="150" Height="100"/>
<TextBlock Grid.Column="0" Grid.Row="0" FontWeight="Bold">First Column</TextBlock>
<TextBlock Grid.Column="1" Grid.Row="0" FontWeight="Bold">Second Column</TextBlock>
</Grid>
<Grid ShowGridLines="True">
<Grid.ColumnDefinitions>
<ColumnDefinition SharedSizeGroup="FirstColumn"/>
<ColumnDefinition SharedSizeGroup="SecondColumn"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" SharedSizeGroup="FirstRow"/>
</Grid.RowDefinitions>
<Rectangle Fill="Silver" Grid.Column="0" Grid.Row="0"/>
<Rectangle Fill="Blue" Grid.Column="1" Grid.Row="0"/>
<TextBlock Grid.Column="0" Grid.Row="0" FontWeight="Bold">First Column</TextBlock>
<TextBlock Grid.Column="1" Grid.Row="0" FontWeight="Bold">Second Column</TextBlock>
</Grid>
</StackPanel>
<TextBlock Margin="10" DockPanel.Dock="Top" Name="txt1"/>
참고 완전한 코드 샘플은 방법: 모눈 간 크기 조정 속성 공유를 참조하십시오.