当前位置: 首页 > 知识库问答 >
问题:

取消选择WPF树状视图中的数据库对象

岳出野
2023-03-14

我工作在一个WPF应用程序,我有2树视图。两者都有一个ViewModel对象集合作为其ItemsSource。我试图使它,当用户选择一个TreeView中的项目时,其他的选择被更改为空。

但是,我注意到TreeView中的实际项目属于SomethingViewModel类型,而不是TreeView项目。这意味着他们没有选择的财产。我已经尝试将IsSelected属性添加到ViewModel对象,并将该属性绑定到我正在使用的TreeViewItem模板,但这似乎不起作用。

XAML:

<TreeView x:Name="trvMaterials" SelectedItemChanged="trvMaterials_SelectedItemChanged" ItemsSource="{Binding MaterialListViewModel.MaterialViewModels}">
    <TreeView.ItemTemplate>
        <HierarchicalDataTemplate ItemsSource="{Binding MaterialVariants}">
            <TreeViewItem Header="{Binding InternalName, Mode=OneWay}" IsSelected="{Binding IsSelected}"></TreeViewItem>
        </HierarchicalDataTemplate>
    </TreeView.ItemTemplate>
</TreeView>

C#:

public bool IsSelected
{
    get { return isSelected; }
    set { isSelected = value; RaisePropertyChanged("IsSelected"); }
}

如何使此功能正常工作?请记住,我是WPF和MVVM的新手。

谢谢

共有1个答案

何楷
2023-03-14

不要像你那样束缚自己。添加ItemContainerStyle如下所示:

<TreeView x:Name="trvMaterials" SelectedItemChanged="trvMaterials_SelectedItemChanged" ItemsSource="{Binding MaterialListViewModel.MaterialViewModels}">
<TreeView.ItemContainerStyle>
    <Style TargetType="TreeViewItem">
      <Setter Property="IsSelected" Value="{Binding IsSelected, Mode=TwoWay}"/>
    </Style>
  </TreeView.ItemContainerStyle>
 <TreeView.ItemTemplate>
  <HierarchicalDataTemplate ItemsSource="{Binding MaterialVariants}">
    <TextBlock Text="{Binding InternalName, Mode=OneWay}"></TextBlock >
  </HierarchicalDataTemplate>
 </TreeView.ItemTemplate>
</TreeView>
 类似资料:
  • 我有一个绑定到MVVM可观察集合的TreeView。我的项目模板由图像和文本块组成,如以下代码所示: 当然,发生这种情况是因为堆栈面板现在位于选择区域上方。 有什么解决办法吗?

  • 我有一个树状视图,其中有可选择的项,以及可能触发某些代码操作的子项。单击子项时,应执行操作,但父项必须保留/成为选定项。 我面临的问题是项目没有被正确取消选择,导致在树视图中选择多个项目。 以下是treeview的xaml: clsBindingDebugger除了调试打印转换的值并传递转换和转换回值之外什么也不做。 接下来是TreeviewItem类的略为缩短的版本 最后我触发事件MyTreev

  • 我想为我的树视图创建一个上下文菜单。TreeView XAML: 而helper:ExtendedTreeView是此类: 我使用它绑定SelectedItem并在我的ViewModel中使用它。 我的树视图有“标题”,它们是类型T_Frage它们的节点是类型T_Wertung,所以它是 T_Frage T_Wertung T_Wertung T_Wertung 我想为标题创建一个上下文菜单。因此

  • 我有一个列表类型的组合框。我通过datacontext绑定了ItemsSource和ItemSelected。如果所选项目已经更改,我会显示一条弹出消息,确认用户的操作。单击“确定”后,选择会发生变化。但是在点击“取消”时,选择应该被取消,而先前的项目应该被保留。下面是绑定到combobox的SelectedItem的属性。 组合框在弹出窗口中。那么Dispatcher对象在这种情况下能工作吗?

  • 如果某个条件为真,是否有方法取消primefaces树中节点的选择事件? 我想显示一个对话框,如果用户选择“取消”选项,则不应更改选择。我曾尝试从p:ajax调用javascript函数,但还是选择了新节点。 我必须重写Primefaces树的默认行为? PF6.2

  • 我有一个基于Java8 Spring Boot 2.3.3的应用程序(使用Hibernate5.4.20),我有一个Postgreql。我想最终了解使用数据库视图和@Sub选择是否更好(对于性能)。 简单概述一下:我有一个实体“Book”和3个实体“BookRank”(用户给书打1到10颗星)、“BookComment”(用户对书的评论)、“BookLike”(用户把书的评论放在一起),每个实体都