2013-02-20 1 views
1

Я пытаюсь создать макет, где как количество строк и количество столбцов динамичны, как показано ниже:Можно ли использовать существующую сетку при создании элемента ItemsControl?

Image http://s7.postimage.org/cdhay2c23/test.png

Я ищу, чтобы все элементы управления, размещенное в одной сетке так что я могу заставить табуляцию работать сверху вниз, слева направо. Код, который я пытаюсь получить работу показано ниже:

<Grid base:GridHelpers.RowCount="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType=dx:DXWindow}, Path=Groups.Count}" Name="EnclosingGrid"> 
    <Grid.ColumnDefinitions> 
     <ColumnDefinition Width="180" /> 
     <ColumnDefinition Width="*" /> 
     <ColumnDefinition Width="*" /> 
     <ColumnDefinition Width="*" /> 
    </Grid.ColumnDefinitions> 
    <!--Labels--> 
    <ItemsControl ItemsSource="{Binding Rows}" ItemsPanel="{Binding ElementName=EnclosingGrid}"> 
     <ItemsControl.ItemContainerStyle> 
      <Style> 
       <Setter Property="Grid.Row" Value="{Binding RowIndex}" /> 
      </Style> 
     </ItemsControl.ItemContainerStyle> 
     <ItemsControl.ItemTemplate> 
      <DataTemplate> 
       <Label Grid.Column="0" Content="{Binding Path=FieldName}" VerticalContentAlignment="Center" /> 
      </DataTemplate> 
     </ItemsControl.ItemTemplate> 
    </ItemsControl> 
    <!--Process fields--> 
    <ItemsControl ItemsSource="{Binding Cells}" ItemsPanel="{Binding ElementName=EnclosingGrid}"> 
     <ItemsControl.ItemContainerStyle> 
      <Style> 
       <Setter Property="Grid.Row" Value="{Binding ParentRow.RowIndex}" /> 
       <Setter Property="Grid.Column" Value="{Binding ColumnIndex}" /> 
      </Style> 
     </ItemsControl.ItemContainerStyle> 
     <ItemsControl.ItemTemplate> 
      <DataTemplate> 
       <TextBox /> 
      </DataTemplate> 
     </ItemsControl.ItemTemplate> 
    </ItemsControl> 
</Grid> 

Я попытался установить атрибут ограждающей сетки ItemsPanel, но, к сожалению, не работает.

Единственный способ установить сетку как ItemsPanelTemplate внутри ItemsControl?

Есть ли другие подходы? Или мне пришлось бы рулон мой ItemsControl?

ответ

0

ItemsPanel тип недвижимости является ItemsPanelTemplate, так что вы не можете связать это свойство непосредственно к некоторому существующему элементу управления.

Вы можете подумать об этом свойстве как о классе фабрики, который должен обеспечивать управление контейнером для предметов. Это MSDN буквально говорит об этом типе: Задает панель, которую ItemsPresenter создает для компоновки элементов ItemsControl.

+0

Не могли бы вы указать ссылку на MSDN, которая говорит это? – IronMan84

+0

@ IronMan84 проверить обновленный текст - я поместил ссылку за словом «MSDN». – Woodman

+0

Привет, Вудман, это означает, что других подходов нет? – Darkzaelus