WPF - 没有容器的DataTemplate,作为Grid中的行的项目?

时间:2009-10-28 20:35:19

标签: .net wpf templates xaml grid

ItemsControl.ItemTemplate一起使用的Grid是否有等效的机制?我有一组项目,我想将它们显示为Grid中的行,以便我可以将Grid.Column分配给模板内的各个元素(而不是列表控件中的行) 。这是否可以在WPF中使用标准控件?

2 个答案:

答案 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所做的那样吗?