在 WPF MVVM 应用程序中,通常使用 TreeView 控件来显示层次结构数据。当用户选择 TreeView 中的 TreeViewItem 时,我们需要在 ViewModel 中响应选中项更改的事件。
在 MVVM 模式下,我们通常不直接处理 View 控件的事件,而是使用绑定将事件转发到 ViewModel 中进行处理。因此,我们需要绑定 TreeView 的 SelectedItem 属性到 ViewModel 中的一个可选的属性,并在 ViewModel 中处理该属性更改的事件。
以下是一些示例代码,演示如何在 WPF MVVM 中响应 TreeView 中 TreeViewItem 的选中事件:
public class MyViewModel : INotifyPropertyChanged
private TreeViewItem _selectedItem;
public TreeViewItem SelectedItem
get { return _selectedItem; }
if (_selectedItem != value)
_selectedItem = value;
OnPropertyChanged(nameof(SelectedItem));
// INotifyPropertyChanged implementation...
在 View 中绑定 TreeView 的 SelectedItem 属性到 ViewModel 中的 SelectedItem 属性:
<TreeView ItemsSource="{Binding Items}" SelectedItem="{Binding SelectedItem, Mode=TwoWay}">
<TreeView.ItemTemplate>
<HierarchicalDataTemplate ItemsSource="{Binding Children}">
<TextBlock Text="{Binding Name}" />
</HierarchicalDataTemplate>
</TreeView.ItemTemplate>
</TreeView>
注意,我们使用 Mode=TwoWay 以便将选中项更改的事件传递到 ViewModel 中。
在 ViewModel 中,可以通过订阅 SelectedItem 属性更改的事件来响应 TreeViewItem 的选中事件:
public class MyViewModel : INotifyPropertyChanged
private TreeViewItem _selectedItem;
public TreeViewItem SelectedItem
get { return _selectedItem; }
if (_selectedItem != value)
_selectedItem = value;
OnPropertyChanged(nameof(SelectedItem));
OnSelectedItemChanged();
private void OnSelectedItemChanged()
// Do something when selected item changes...
// INotifyPropertyChanged implementation...
在 OnSelectedItemChanged 方法中,可以执行任何响应 TreeViewItem 选中事件的操作。
以上就是在 WPF MVVM 应用程序中响应 TreeView 中 TreeViewItem 的选中事件的基本步骤。当然,在实际应用中可能会有更多复杂的场景需要处理,但这里提供的代码应该可以满足大多数基本需求。