相关疑难解决方法(0)

数据绑定到WPF Treeview中的SelectedItem

如何检索在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)

c# wpf treeview selecteditem mvvm

231
推荐指数
9
解决办法
16万
查看次数

如何从HierarchicalDataTemplate项中获取TreeViewItem?

我有一个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对象(甚至不知道如何).

我怎样才能做到这一点?

wpf treeview hierarchicaldatatemplate

31
推荐指数
4
解决办法
4万
查看次数