与ItemsControl.ItemTemplate
一起使用的Grid
是否有等效的机制?我有一组项目,我想将它们显示为Grid
中的行,以便我可以将Grid.Column
分配给模板内的各个元素(而不是列表控件中的行) 。这是否可以在WPF中使用标准控件?
答案 0 :(得分:12)
好的,使用带有Grid.IsSharedSizeScope="true"
附加属性的ItemsControl。接下来,对于您的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的更多信息,请check out this section of the SDK。应该注意的是,RowDefinitions也有一个SharedSizeGroup,所以你也可以做水平布局。
答案 1 :(得分:1)
也许我误解了你的问题,但这不就是GridView所做的那样吗?