我有一个ItemsControl
它有很多列和一个静态标题行。我知道HeaderedItemsControl
但我不确定它能达到我想要的。控件模板和项目模板之间的itemscontrol共享网格
我现在拥有的是ControlTemplate
作为标题和ItemsPresenter
的容器,然后ItemTemplate
用于组织记录。
目前我在内容和项目模板中都有一个重复的网格,我想找到一个优雅的解决方案,我可以在两个模板之间共享同一个网格,所以我不必更改两件事情当编辑它时。模拟它下面的样子,实际的控制有更多的列。我读过有关IsSharedSizeScope
和SharedSizeGroup
,但我推测这是行不通的,因为它只有函数时,有两个网格共享一个父元素(他们都需要为控件模板内)
<ItemsControl ItemsSource="{Binding SomeSource}">
<ItemsControl.Template>
<ControlTemplate TargetType="ItemsControl">
<StackPanel>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0" Text="Col1" />
<TextBlock Grid.Column="1" Text="Col2" />
<TextBlock Grid.Column="2" Text="Col3" />
</Grid>
<ItemsPresenter/>
</StackPanel>
</ControlTemplate>
</ItemsControl.Template>
<ItemsControl.ItemTemplate>
<DataTemplate>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0" Text="ItemCol1" />
<TextBlock Grid.Column="1" Text="ItemCol2" />
<TextBlock Grid.Column="2" Text="ItemCol3" />
</Grid>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
我已经可能做了一些不好的练习,所以随时给我指点。
我会给它一个镜头,是的,我编辑的例子,当我在响应,绑定是它实际上就像我会改变这一点。我可以删除其中一个网格的标签吗? –
pgwri