2009-11-25 73 views
5

看起来其他人对这个问题有不同的看法,但是从我可以告诉它没有针对在单视图模型中使用集合的人解决。MVVM以编程方式选择树视图项目

我有一个虚拟机,它包含一个ObservableCollection对象,而不是每个对象的虚拟机。因此我不认为我可以使用经常讨论的SelectedItem bool,因为我不认为我可以绑定到集合对象的属性......只是VM上的属性。

所以我已经写得很好,没有代码隐藏和最小耦合,但是当一个新项目被添加到绑定到treeView的集合中时,我需要选择该项目。

想法?

谢谢!

回答

4

想到这个时候。你应该真的为树视图的每个元素构建一个包装,它包含IsSelected布尔以及IsExpanded布尔,它们让生命显得更加简单。你甚至可以将它们添加到你的课堂并从那里使用它们。

+0

也许是这样。尽管我走了一条中路。我继续执行INotifyPropertyChanged对VM的ObservableCollection持有的每个对象类型,并对它们进行了SlaSeped IsSelected和IsExpanded。 不好的一面是,我的物体现在已经有了这样的物体(这是甚至不好?)。 好的一面是,我没有创建额外的虚拟机层,除了提供底层对象和这两个属性的地方外,没有其他任何东西。 – Bob 2009-11-25 20:07:14

+0

如果这就是你所需要的,那么你可以这样做。 – Erin 2009-11-26 20:20:32

4

Josh Smith在CodeProject上有一篇文章,他建议创建一个ViewModel对象来表示TreeView的每个节点,然后根据需要自动装载它们。

http://www.codeproject.com/KB/WPF/TreeViewWithViewModel.aspx

+0

是的,这是一个很好的文章。不要回避我,但我认为这可能是矫枉过正,当你真正需要做的是在几个UI交互中进行连接(扩展,选择)。 :) – Bob 2009-12-01 16:36:47

相关问题