WPF可折叠树,对齐列

时间:2018-01-19 21:06:11

标签: wpf tree grid-layout hierarchical-data tabular

我正在努力改进相当复杂系统的实时日志显示。目前,态势感知(通过仅显示高级事件而得到改善)和再现性(需要大量细节)之间存在显着的权衡。显而易见的方法是将细节结构化为树,并允许其显示扩展和折叠。

现有实现仅使用RichTextbox。我想使用MVVM进行重写,不仅因为它是一种最佳实践,而且还可以启用诸如“在操作正在进行时显示操作的详细信息,然后在成功完成后自动折叠它们”之类的行为。

作为进一步的复杂性,日志记录具有一些结构,需要以柱状格式显示。嵌套应仅使用描述列完成(可以通过纯缩进,如图所示,或使用树线)。

您能推荐一种将此数据结构映射到WPF模板元素的方法吗?似乎没有办法从父对象生成DataGridRow个对象序列。并且因为行没有统一的高度(一些细节数据是多行的),尝试使用WPF树进行描述然后在其他列中同步数据的垂直位置似乎不可行。

我是否必须放弃数据绑定模型的概念,并使用更多的视图控制器设计和手动创建WPF元素,并明确存储DataGridRow这些元素的引用内存中的树结构,并通过迭代子项并更新相关WPF元素对象的每个后代的Height属性来实现折叠和扩展?

如果我打破数据/演示文稿墙并使用命令式编码风格,是否有类似于WinForms SuspendLayout / ResumeLayout的内容,我可以使用它来实现每次折叠的单个布局传递,无论高度变化了多少行?

这是使用WPF + XAML制作的树结构的快速模型。它只是一个没有任何文档结构的网格 - 所有文本元素都是网格的直接子元素,手动设置了Grid.RowGrid.Column附加属性。显然,这不适合实时生成新数据和结构的实现。

enter image description here

0 个答案:

没有答案