2014-12-16 4 views
0

격자 레이아웃을 동적으로 만들고 싶습니다. 꽤 필요한 유일한 수정은 내가 때로는 더 많은 행과 열을 필요로한다는 것입니다. 그래서 문제는, 어떻게 행 - & 내 C# 클래스의 열 정의에 액세스 할 수 있습니까?WPF 그리드 컨트롤이 동적으로 크기 조정 가능 (더 많거나 적은 행과 열)

<StackPanel Grid.Row="1" VerticalAlignment="Stretch"> 
    <Grid Name="mygrid" Height="490"> 
    <Grid.RowDefinitions> 
     <RowDefinition Height="*"/> 
     <RowDefinition Height="*"/> 
     <RowDefinition Height="*"/> 
    </Grid.RowDefinitions> 
    <Grid.ColumnDefinitions> 
     <ColumnDefinition Width="*"/> 
     <ColumnDefinition Width="*"/> 
    </Grid.ColumnDefinitions> 
    </Grid> 
</StackPanel> 

C#으로 해결할 수 없지만. 나는이 시도를 시도했지만 아무런 결론도 내리지 못했다.

mygrid.ColumnDefinitions 

누가 올바른 방향으로 나를 가리킬 수 있습니까?

+0

'Grid'는 실제로 그렇게하기위한 것이 아닙니다. 어쨌든, 당신의 시도는 무엇이 잘못 되었습니까? – BradleyDotNET

+0

@BradleyDotNET : 어느 XAML 컨트롤이 더 적합합니까? –

+0

@RobertHarvey 동적 레이아웃을 원하십니까? StackPanel입니다. 'Grid'가 여기에있는 유일한 것은 짝수 간격으로, 사용자 정의 패널을 쓸 수 있습니다. 대부분 그가 성취하려는 * 것에 달려 있습니다. – BradleyDotNET

답변

1

열 정의를 변경하는 것이 간단해야합니다. ColumnDefinitionCollectionIList<ColumnDefinition>을 구현하므로 .Net의 일반 목록처럼 취급 할 수 있습니다.

추가 :

var newColumn = new ColumnDefinition { Width = new GridLength(1, GridUnitType.Star) }; 
mygrid.ColumnDefinitions.Add(newColumn); 

제거 :

mygrid.ColumnDefinitions.RemoveAt(mygrid.ColumnDefinitions.Count - 1); 

(참고 : 당신은 또한 행/열 수를 바인딩 연결된 속성을 사용하여 고려할 수 있습니다 - 예를 들어 here를 참조하십시오.)

+0

감사합니다. 매력처럼 작동합니다. – Daybreak