2010-01-15 4 views
1

내용이 격자 인 WPF 컨트롤에서 작업하고 있습니다. 나는 상대적으로 WPF에 익숙하지 않기 때문에 아래에 이것이 올바른지에 관해 궁금해하고있다.WPF 격자 레이아웃 및 셀 내용 여백

<Window 
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
x:Class="UntitledProject8.Window1" 
x:Name="Window" 
Title="Window1" 
Width="200" Height="200"> 

<Grid x:Name="LayoutRoot"> 
    <Grid HorizontalAlignment="Left" VerticalAlignment="Top" Width="100" Height="100"/> 
    <Grid.RowDefinitions> 
     <RowDefinition Height="*"/> 
     <RowDefinition Height="*"/> 
    </Grid.RowDefinitions> 
    <Label Grid.Row="0" Content="1.23" FontSize="18" HorizontalAlignment="Center" VerticalAlignment="Bottom"/> 
    <Label Grid.Row="1" Content="45" FontSize="48" HorizontalAlignment="Center" VerticalAlignment="Top"/> 
</Grid> 

I이 레이블의 수직 배향이되도록 연속 제로의 라벨은 정렬되어 설정 :

나는 동일한 열하지만 인접한 행 모두에서, 그리드에서 두 개의 라벨을 배치 하단에 있고 1 행의 라벨이 상단에 정렬되어 있습니다.

자, 이것은 내가 원하는 것에 가깝지만 행 0의 레이블 텍스트에 더 가깝도록 행 1의 레이블 실제 텍스트가 필요합니다. 이를 위해 나는 음의 값으로 1 행에서 라벨의 여백을 설정

<Window 
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
x:Class="UntitledProject8.Window1" 
x:Name="Window" 
Title="Window1" 
Width="200" Height="200"> 

<Grid x:Name="LayoutRoot"> 
    <Grid HorizontalAlignment="Left" VerticalAlignment="Top" Width="100" Height="100"/> 
    <Grid.RowDefinitions> 
     <RowDefinition Height="*"/> 
     <RowDefinition Height="*"/> 
    </Grid.RowDefinitions> 
    <Label Grid.Row="0" Content="1.23" FontSize="18" HorizontalAlignment="Center" VerticalAlignment="Bottom"/> 
    <Label Grid.Row="1" Content="45" FontSize="48" HorizontalAlignment="Center" VerticalAlignment="Top" Margin="0,-20,0,0"/> 
</Grid> 

이 올바른 방법으로 그것을 할인가요? 위의 예제는 단순하지만 그리드 내용이 커지면서 (다른 레이아웃 컨테이너 포함과 같이) 컨트롤 마진에 대해 서로 다른 값을 설정하면 인접한 셀을 더 가깝게 또는 멀리 떨어지게하는 올바른 방법이 무엇입니까?

WinForms (예 : 위치 및 크기 값에 대한 정확한 좌표 설정)에서 작업 할 때 "디자이너"값을 하드 코딩하지 않도록 최선을 다하고 있으므로 레이아웃 관리자가 처리하도록합니다. 그러나 마진을 설정하는 것이 유일한 방법입니다.

감사합니다.

답변

1

나가 약간을 붙잡은 유일한 것은 (동일한 것을해야하는 바닥을위한 20 대신에) 최고 한계를 위해 -20이었다, 그러나 나는 명확성을 위해 저것을 단지 바꿀 것입니다.

주목할 주요 내용은 그리드가 분명히 사용할 수있는 컨테이너입니다. 이것의 또 다른 특징은 그리드를 늘릴 때 요소 간의 거리가 비례하여 증가한다는 것입니다 (어쨌든 원하는 것). 그리드의 유일한 약점은 그것이 가장 효율적이지 않다는 것입니다. 주로 그렇게 많이 할 수 있기 때문입니다.

스트레칭 기능이있는 캔버스에서 위와 동일한 작업을 수행 할 수 있습니다. 또는 거리를 늘리지 않으려는 경우 스택 패널을 시도해 볼 수 있습니다. 그리드보다 효율적입니다. 몇 가지 다른 패널도 있지만, 그들이 할 수있는 것에 익숙해지면 (그리고 얼마나 잘 수행하는지) 더욱 도움이됩니다. 특히 더 복잡한 레이아웃을 만들 때 유용합니다.

여백에 대해서는 폭과 높이를 설정하는 것과 함께 간격을 설정하는 표준 방법입니다.