如何绑定到WPF TreeView的SelectedItem属性?

Rac*_*ael 3 treeview selecteditem mvvm inotifypropertychanged selecteditemchanged

我在这里调整了TreeView Control示例项目,以便与Entity Framework对象一起使用.它运行得很漂亮,但是像许多其他人一样,尝试更新基于ParentViewModels的SelectedItem更改的集合或属性时,我也无法弥合理解的差距.

我在MVVM工作,希望我的代码隐藏免受任何混乱.作为一个初学者,我喜欢实现PropertyChanged通知的清洁,但由于它们没有固定的"SelectedItem"属性来绑定TreeView,我无法像往常一样提升我的PropertyChanged事件ListBox.

我的ChildViewModel上也有一个SelectedItem属性(实际上成功捕获了isSelected = true的对象)(参见HB对这个问题的回答).我也有我的ParentViewModel这势必我的看法(见@马丁Liversage的职位类型ChildViewModel的的SelectedItem 这里).我不能让他们同步.

请帮助我了解如何将SelectedItemChildViewModel 的属性传递给我的ParentViewModel.我没有将我的TreeView绑定到a CollectionView,所以我无法获取CurrentItem视图集合.

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

Mar*_*arc 6

所以,至少你已经开始习惯你的日常MVVM-WTF ......"为什么我必须在SO上发布基本的东西".有一天,你会喜欢MVVM,我保证;)

话虽如此:如您所知,TreeView不支持同步SelectedItem属性.但它确实存在,但它是只读的.你想要做的是扩展TreeView的行为,使其所选项与其ViewModel上的属性同步.

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

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

SO线程

这应该已经为你做了.您只需复制并粘贴Steve GreatRex的代码即可.如果您需要有关该方法的帮助,请发表评论.玩得开心学习!