如何使用 MVVM 模式在 TreeView 中获取选定节点而不使用代码隐藏? [复制]

Posted

技术标签:

【中文标题】如何使用 MVVM 模式在 TreeView 中获取选定节点而不使用代码隐藏? [复制]【英文标题】:How to get Selected Node in TreeView without Code Behind using MVVM pattern? [duplicate] 【发布时间】:2014-10-09 00:40:32 【问题描述】:

我想将 Treeview 的选定节点绑定到 ViewModel,注意每个节点都是一个 NavPoint(来自 EPUB 的内容表),如何在控件上创建一个依赖属性“SelectedNode”,以正确绑定选定节点类型 。 我用过

<TextBlock Text="Binding SelectedItem ,ElementName=myTreeview"/>

但我想将它绑定到我的 MainWindowViewModel.cs 类以对其进行操作并对其进行一些更改!

【问题讨论】:

使用行为或扩展 TreeView,如链接问题的答案中提供的那样。 【参考方案1】:

如果您处理TreeView.SelectedItemChanged Event,那么您可以更新您的SelectedNode 属性:

private void SelectionChanged(object sender, RoutedPropertyChangedEventArgs<Object> e)

    YourSelectedNodeProperty = (TreeViewItem)e.NewValue;

【讨论】:

我认为问题是使用 MVVM 模式。这可行,但我希望有人可以阐明如何使用 MVVM 来做到这一点 @Rob,要将此方法与 MVVM 一起使用,只需将此事件包装在附加属性中即可。我在 Stack Overflow 上对What's the best way to pass event to ViewModel? 问题的回答中记录了一个示例。

以上是关于如何使用 MVVM 模式在 TreeView 中获取选定节点而不使用代码隐藏? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

WPF MVVM TreeView SelectedItem

WPF - MVVM Treeview获取所选项目[重复]

MVVM模式被破坏了吗?

MVVM Light,TreeView ItemSsource不更新

WPF - MVVM ???TreeView

WPF TreeView IsExpanded 绑定不上的问题