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

28 浏览
0 Comments

如何绑定到 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集合非常查询密集,所以暂时没有包含任何代码。请告诉我需要什么以便更清楚地解决问题。

0
0 Comments

这个问题的出现的原因是WPF的TreeView控件不支持绑定到SelectedItem属性。尽管SelectedItem属性是只读的,但你想要做的是扩展TreeView的行为,使其选中的项与ViewModel中的属性同步。

解决方法是使用行为(Behavior)。行为可以扩展任何DependencyObject的功能。可以通过以下链接找到一个使用行为来实现TreeView与选中项同步的方法。

SO Thread: https://stackoverflow.com/questions/1000040

你可以复制并粘贴Steve GreatRex的代码来实现。如果需要帮助,请在评论中提问。祝你学习愉快!

谢谢,希望能帮到你!

0