3

我已经调整了此处的 TreeView 控件示例项目,以便与实体框架对象一起使用。它工作得很好,但就像许多其他人试图在基于 ParentViewModels 的SelectedItem更改上更新集合或属性一样,我也无法弥合理解的鸿沟。

我在 MVVM 中工作,并希望我的代码隐藏没有任何混乱。作为一个初学者,我喜欢实现PropertyChanged通知的简洁性,但由于它们没有绑定到 的固有“SelectedItem”属性TreeView,因此我无法像通常使用ListBox.

我的 ChildViewModel 上也有一个 SelectedItem 属性(实际上成功捕获了 isSelected = true 的对象)(请参阅 HB对此问题的回答)。我的 ParentViewModel 上还有一个 ChildViewModel 类型的 SelectedItem,它绑定到我的视图(请参阅@Martin Liversage 的帖子。我无法让它们同步。

请帮助我了解如何将SelectedItemChildViewModel 的属性传达给 ParentViewModel。我没有将 TreeView 绑定到 a CollectionView,因此我无法CurrentItem在视图集合中获取 。

我正在处理的视图模型集合非常需要查询,所以我现在没有包含任何代码。请让我知道清楚需要什么。

4

1 回答 1

6

所以,至少你开始习惯你每天的 MVVM-WTF ......“为什么我必须在 SO 上发布像这样基本的东西”。有一天,你会爱上 MVVM,我保证;)

话虽这么说:如您所知,TreeView 不支持同步SelectedItem属性。它确实存在,但它是只读的。您想要做的是扩展 TreeView 的行为,以将其选定的项目与其 ViewModel 上的属性同步。

此问题描述为您指明了正确的方向:行为。行为(或者,准确地说,System.Windows.Interactivity.Behavior<>s)允许您扩展任何DependencyObject. (好介绍

可以在此处找到通过行为将 TreeView 与选定项目同步的方法:

所以线程

这应该已经为你做了。您可以复制并粘贴Steve GreatRex的代码并继续使用它。如果您需要有关该方法的帮助,请发表评论。学习愉快!

于 2013-03-07T08:10:37.387 回答