如何绑定到 WPF TreeView 的 SelectedItem 属性?
如何绑定到 WPF TreeView 的 SelectedItem 属性?
我已经根据使用实体框架对象的要求来调整了TreeView控件示例项目这里。它工作得很好,但像许多其他人一样,我想在基于SelectedItem
更改的情况下更新我的ParentViewModels的集合或属性,但我无法弥合这种理解上的差距。
我正在使用MVVM模式工作,并希望我的代码不被任何混乱所困扰。作为一个初学者,我喜欢实现PropertyChanged
通知的简洁性,但由于TreeView
上没有固有的"SelectedItem"属性可供绑定,我无法像在ListBox
上那样引发我的PropertyChanged事件。
我也有一个SelectedItem属性(实际上成功地捕获isSelected = true的对象)在我的ChildViewModel上(参见H.B.在这个问题的回答)。我在我的ParentViewModel上也有一个类型为ChildViewModel的SelectedItem属性,它绑定到我的View(参见@Martin Liversage在这里的帖子)。但我无法使它们同步。
请帮助我理解如何将我的ChildViewModel的SelectedItem属性传递给我的ParentViewModel。由于我没有将我的TreeView绑定到CollectionView
,所以无法在视图集合中获取CurrentItem
。
我正在处理的ViewModel集合非常查询密集,所以暂时没有包含任何代码。请告诉我需要什么以便更清楚地解决问题。
这个问题的出现的原因是WPF的TreeView控件不支持绑定到SelectedItem属性。尽管SelectedItem属性是只读的,但你想要做的是扩展TreeView的行为,使其选中的项与ViewModel中的属性同步。
解决方法是使用行为(Behavior)。行为可以扩展任何DependencyObject的功能。可以通过以下链接找到一个使用行为来实现TreeView与选中项同步的方法。
SO Thread: https://stackoverflow.com/questions/1000040
你可以复制并粘贴Steve GreatRex的代码来实现。如果需要帮助,请在评论中提问。祝你学习愉快!
谢谢,希望能帮到你!