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

Ric*_*ich 3 .net wpf grid xaml templates

是否有一个相当于机制来ItemsControl.ItemTemplate与一个作品Grid?我有一个项目集合,我想将它们显示为一行,Grid以便我可以分配Grid.Column给模板内的各个元素(而不是列表控件中的行).这是否可以在WPF中使用标准控件?

Dre*_*rsh 12

好的,使用带有Grid.IsSharedSizeScope="true"附加属性的ItemsControl .接下来,对于您的ItemTemplate,您可以<Grid>像往常一样使用,除非现在添加ColumnDefinitions时将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>
Run Code Online (Sandbox Code Playgroud)

有关IsSharedSizeScope和SharedSizeGroup的更多信息,请查看SDK的此部分.应该注意的是,RowDefinitions还有一个SharedSizeGroup,因此您也可以进行水平布局.