如何动态添加行和合并单元格

时间:2014-10-31 09:53:23

标签: c# wpf

我需要创建一个表,我可以动态添加行并合并它。我搜索了很多,找不到任何好的解决方案:(这是它应该如何工作:

http://s12.postimg.org/84ywzdq71/bez_tytu_u.jpg

您对如何创建它有什么想法吗?它也应该有选择它。

1 个答案:

答案 0 :(得分:1)

选项1:

<Grid> + columns / rowsdefinitions + Grid.RowSpan + Grid.ColumnSpan + <Border> + <TextBlock> + Background +正确的数据绑定(或硬连线数据) ..)每个TextBlock。那是完全基本的布局。如果数据源具有可变行数(Cats,Dog,Mouse,ID,...),那么您将需要相当多的代码来生成它。一般来说不是一个好主意。

选项2:

正确的ViewModel +标头的简单网格,每列的SharedSizeGroups + ItemsControl(垂直)+自定义ItemTemplate(项目= Cat |狗|鼠标,Z和内部数据)基于{ {1}}使用Grid,以便每个项目(Cat,Mouse ..)中的SharedSizeGroups宽度相同。该模板的列需要包含单个Columns(带有动物类型或“Z”),或者另一个带有自定义TextBlock的内部ItemsControl(垂直){ID,X, Y)。此内部模板也应该基于网格,并使用SharedSizeGroups,以便列与标题对齐。行probablu可以具有预定的恒定高度。

此选项允许您通过简单地将行添加到viewmodel中的集合来添加行,并且您不必合并任何内容,因为外部ItemTemplate将Cat / Z指定为更大高度的简单单个“单元格”,并且它是内部的ItemsTemplate,它将大单元格拆分为更多的嵌入行。

选项3:

或者只是采取一些商业(Infragistics,DevExpress,Telerik等,或一些免费的)“GridView / DataTable”(名称各不相同)或类似的组件。它们通常允许“分组”和/或“摘要”,因此您应该能够在皮带上制作具有较小“细节”单元格的大“Cat”单元格。我不知道Z怎么样 - 它取决于具体的gridview组件。

例如,玩DevX Grid的这些演示(警告:商业!)http://demos.devexpress.com/MVCxGridViewDemos/以获得感觉。特别是看“分组”和“主 - 细节”。后者类似于option2:“master”是外部ItemTemplate,“detail”是内部ItemTemplate。您可以以任何方式设置内部样式,因此它可以像演示中的“表视图”一样,或者它可以无缝地模仿成为表格的一部分。