【发布时间】:2016-11-11 06:11:16
【问题描述】:
我的模型中有一个由星座和实体组成的 2 级层次结构,托管在根对象中,我想在 TreeView 中显示它们。
Root object
L Constellations
L Entities
我的RootObjectViewModel 暴露了我的根对象。在那方面,我完全同意 MVVM best practices 中的 Bryan Lagunas 的观点,即模型对象应该由视图模型公开,而不是做外观。顺便说一句,很棒的视频,真的值得花时间。
我到处读到TreeView.ItemsSource 应该映射到视图模型的集合,也就是说,对于我的星座集合,我的RootObjectViewModel 应该提供ConstellationViewModel 的集合。
我担心的是,如果我的星座集合和其中的实体是实时的,也就是说,如果添加、更改(它们的顺序)或删除了某些项目,我必须在我的 ViewModel 集合中手动反映这些更改。
我会发现将 ItemsSource 映射到 Constellation 本身的集合会更优雅,这样模型中的任何更改都不会重复反映,然后有一些转换器来映射 TreeViewItems.DataContext到基于星座模型的ConstellationViewModel。
如果这还不够清楚,我可以用一些示例代码来澄清这一点。
是否有人遇到过同样的问题和/或尝试实施此问题?
提前感谢您的帮助。
塞德里克
【问题讨论】:
标签: wpf mvvm collections treeview