我需要创建一个表,我可以动态添加行并合并它。我搜索了很多,找不到任何好的解决方案:(这是它应该如何工作:
您对如何创建它有什么想法吗?它也应该有选择它。
答案 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。您可以以任何方式设置内部样式,因此它可以像演示中的“表视图”一样,或者它可以无缝地模仿成为表格的一部分。