2013-12-12 6 views
0

두 개의 레이블이있는 표가 있습니다.전역 행 정의에서 wpf 모눈을 설정하십시오.

<Grid> 
    <Label Grid.Row="0" Content="Hello" Height="20"></Label> 
    <Label Grid.Row="1" Content="World" Height="20"></Label> 
</Grid> 

각 행마다 추가 할 수 있다는 것을 알고 있지만 100 행이 있으면 100 행 정의를 추가해야합니다. 모든 행/열이 해당 속성을 상속 할 수 있도록 행 정의를 전역 적으로 설정하는 방법이 있습니까?

+0

'그러나 나는 100 개의 행이있는 경우 I 100 개의 행 정의를 추가해야합니다'-'Grid'에 100 개의 행을 넣지 마십시오. 그럴 필요는 없으며이를 보여주기 위해서는'1209381203120398 by 12938042309842304'의 화면 해상도가 필요합니다. 그것은 말이되지 않습니다. –

+0

대신 StackPanel을 사용할 수 있습니다 ... – punker76

+0

4 ~ 5 행이 있더라도 전역 적으로 행 높이를 설정하는 방법이 있습니까? – amirm

답변

0

항상 서브 클래스 Grid 수 있습니다. 각 자식의 Grid.Row 속성을 설정하고 컨트롤이로드 될 때 수동으로 행 정의를 추가하십시오. 컨트롤에 속성을 추가하여 각 행의 균일 한 높이를 지정할 수 있습니다. 예를 들면 :

public class UniformGrid : Grid 
{ 
    public double? UniformHeight { get; set; } 

    public UniformGrid() 
    { 
     Loaded += UniformGrid_Loaded; 
    } 

    void UniformGrid_Loaded(object sender, RoutedEventArgs e) 
    { 
     int i=0; 
     foreach (FrameworkElement child in Children) 
     { 
      var rowHeight = UniformHeight.HasValue ? new GridLength(UniformHeight.Value) : GridLength.Auto; 
      RowDefinitions.Add(new RowDefinition { Height = rowHeight }); 
      Grid.SetRow(child, i++); 
     } 
    } 
} 

사용법 :

<my:UniformGrid UniformHeight="20"> 
    <Label Content="Hello" /> 
    <Label Content="World" /> 
</my:UniformGrid> 

(일부 의견이 지적했듯이, 위에서 기본적으로 그냥 StackPanel에 유일한 느린,하지만.)