2012-01-25 3 views
7

고정 된 수의 열과 알 수없는 행 수가있는 표가 있습니다. 행의 수는 생성자에서 한 번 설정됩니다. 나는했습니다어떻게 ItemsPanelTemplate의 Grid에 RowDefinition을 동적으로 추가 할 수 있습니까?

<ItemsControl Name="myItemsControl" ItemsSource="{Binding Cells}"> 
    <ItemsControl.ItemsPanel> 
     <ItemsPanelTemplate> 
      <Grid Name="myGrid"> 
       <Grid.ColumnDefinitions> 
        <ColumnDefinition/> 
        <ColumnDefinition/> 
        <ColumnDefinition/> 
       </Grid.ColumnDefinitions> 
       <Grid.RowDefinitions> 
        <!-- some rows should be added here --> 
       </Grid.RowDefinitions> 
      </Grid> 
     </ItemsPanelTemplate> 
    </ItemsControl.ItemsPanel> 
    <ItemsControl.ItemContainerStyle> 
     <Style.../> 
    </ItemsControl.ItemContainerStyle> 
</ItemsControl> 

는 다음 코드 줄을 시도하지만 그것은 null을 반환 :

object obj = myItemsControl.Template.FindName("myGrid", myItemsControl); 

가 어떻게 코드 "에는 myGrid"에 행을 추가 할 수 있습니까?

답변

22

당신은 이러한 속성을 설정하거나 변경할 때 RowDefinitionsColumnDefinitions을 수정하는 Grid에 대한 attached properties를 사용할 수 있습니다.

그것은 당신이 당신의 Grid과 같이 쓸 수 있습니다 :

<Grid local:GridHelpers.RowCount="{Binding MaxGridRow}" 
     local:GridHelpers.ColumnCount="3" /> 

그런 다음 바로 Cells 컬렉션의 최대 행 수를 반환하여 ViewModel에서 속성을 노출합니다.

해당 속성 on my blog의 자세한 구현을 찾을 수 있습니다.

+0

고마워. 나는 안심할 수있다. 그런데 마지막 두 가지 방법에 작은 실수가 있었다. 나는 그들을 다음과 같이 변경했다. GetStarColumns (grid). Split (','); – Bijan

+0

@Bizz 감사합니다 :) 처음으로 나는 모든 특수 문자를 제거하고 나는 실수로 큰 따옴표로 작은 따옴표를 교체해야합니다 wordpress에 코드를 복사했습니다. 특정 별 열/행이 하루 전에 여러 개의 별 열을 필요로하고 문자열로 업데이트하기로 결정했기 때문에 여분의'.ToString()'이있었습니다. – Rachel

+1

사이트 외부 연결이 잘못되었으므로, 기본 아이디어 (바인드 된 속성 및 속성 변경 핸들러는 모눈을 수정)를 제시해야하며 링크는 게으른 사람들을위한 구현 세부 사항 일뿐입니다. –

-1

그냥 myItemsControl.GetTemplatedChild("myGrid") insted를 사용하십시오. 또한 위에 표현식을 사용하기 전에 컨트롤을로드해야합니다.

+0

'ItemsControl'에는'GetTemplateChild' 메서드가 없습니다 – Bijan

9
var rowDefinition = new RowDefinition(); 
rowDefinition.Height = GridLength.Auto; 
grid.RowDefinitions.Add(rowDefinition); 
+0

이것은 도움이되지 않습니다. 코드 내에서 이름으로 myGrid에 액세스 할 수 없습니다. – Bijan

+0

내가 할 수있는 ...이 나를 위해 잘 작동 – WtFudgE

+0

ItemsControl의 ItemPanelTemplate 때 * 무엇이든 액세스 할 수 없습니다. @WtFudgE 아마도 당신은 그 이상의 뭔가를하고있을 것입니다. –

관련 문제