WPF - DataTemplate без контейнера, элементы в виде строк в сетке?
Вопрос
Существует ли механизм, эквивалентный ItemsControl.ItemTemplate
, который работает с Grid
? У меня есть коллекция элементов, и я хотел бы представить их в виде строк в Grid.Column
, чтобы я мог назначить <=> отдельным элементам внутри шаблона (в отличие от строк в элементе управления списком). Возможно ли это в WPF с использованием стандартных элементов управления?
Решение
Хорошо, используйте ItemsControl с примененным прикрепленным свойством Grid.IsSharedSizeScope="true"
. Далее, для вашего ItemTemplate вы используете <Grid>
, как обычно, но теперь, когда вы добавляете ColumnDefinition
, вы устанавливаете для атрибута SharedSizeGroup
имя, уникальное для каждого столбца. Так, например:
<ItemsControl Grid.IsSharedSizeScope="true">
<ItemsControl.ItemTemplate>
<DataTemplate>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition SharedSizeGroup="MyFirstColumn" />
<ColumnDefinition SharedSizeGroup="MySecondColumn" />
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0" Text="{Binding MyFirstProperty}"/ >
<TextBlock Grid.Column="1" Text="{Binding MySecondProperty}"/ >
</Grid>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
Дополнительные сведения о IsSharedSizeScope и SharedSizeGroup см. в этот раздел SDK . Следует отметить, что у RowDefinitions также есть SharedSizeGroup, чтобы вы могли также делать горизонтальные макеты.
Другие советы
Может быть, я неправильно понял вашу проблему, но разве это не то, что GridView делает?