我有一个单列网格,在 WPF 应用程序中具有不同高度的行。网格中的项目是动态生成的,将在运行时添加和删除。
对于添加的每一行,我希望在每个元素之间插入一个 GridSplitter 行。
我目前通过 ItemControl 绑定模型数据,并使用 AttachedProperties 来获取元素行数(显然最终的解决方案将有更多的行数来包含 GridSplitters):
<ItemsControl ItemsSource="{Binding MyModel}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<Grid local:GridHelpers.RowCount="{Binding MyModel.RowCount}" local:GridHelpers.ColumnCount="1"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
</ItemsControl>
MyModel 变量是一个包含 ViewModel 对象的 ObservableCollection。RowCount 是一个成员变量,它返回集合中元素的数量。
如何在每行之间插入 GridSplitter?
我希望从模板生成每个元素和 GridSplitter。但是,如果 GridSplitter 包含在模板中,则由于存在 ContentPresenter 作为其父级而不是 Grid,因此它不起作用。除了创建自己的 UI 元素之外,我的想法已经用完了,它有自己的拆分器组件是从头开始编写的。肯定还有别的办法!
非常感谢您的帮助。