如何检索在WPF树视图中选择的项目?我想在XAML中这样做,因为我想绑定它.
你可能会认为它SelectedItem显然是不存在的只是readonly因此无法使用.
这就是我想要做的:
<TreeView ItemsSource="{Binding Path=Model.Clusters}"
ItemTemplate="{StaticResource ClusterTemplate}"
SelectedItem="{Binding Path=Model.SelectedCluster}" />
Run Code Online (Sandbox Code Playgroud)
我想绑定SelectedItem到我的模型上的属性.
但这给了我错误:
'SelectedItem'属性是只读的,不能通过标记设置.
编辑: 好的,这是我解决这个问题的方式:
<TreeView
ItemsSource="{Binding Path=Model.Clusters}"
ItemTemplate="{StaticResource HoofdCLusterTemplate}"
SelectedItemChanged="TreeView_OnSelectedItemChanged" />
Run Code Online (Sandbox Code Playgroud)
在我的xaml的codebehindfile中:
private void TreeView_OnSelectedItemChanged(object sender, RoutedPropertyChangedEventArgs<object> e)
{
Model.SelectedCluster = (Cluster)e.NewValue;
}
Run Code Online (Sandbox Code Playgroud) 我有一个TreeView使用a HierarchicalDataTemplate绑定其数据.
它看起来像这样:
<TreeView x:Name="mainTreeList" ItemsSource="{Binding MyCollection}>
<TreeView.Resources>
<HierarchicalDataTemplate
DataType="{x:Type local:MyTreeViewItemViewModel}"
ItemsSource="{Binding Children}">
<!-- code code code -->
</HierarchicalDataTemplate>
</TreeView.Resources>
</TreeView>
Run Code Online (Sandbox Code Playgroud)
现在,从主窗口的代码隐藏,我想得到当前选择TreeViewItem.但是,如果我使用:
this.mainTreeList.SelectedItem;
Run Code Online (Sandbox Code Playgroud)
selectedItem属于类型MyTreeViewItemViewModel.但我想得到'父母'或'约束' TreeViewItem.我没有把它传递给我的TreeViewItemModel对象(甚至不知道如何).
我怎样才能做到这一点?