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

WPF树查看所选项目并显示用户控件

别帅
2023-03-14

我正在用TreeView和用户控件让自己陷入困境;我是WPF的新手,所以请提前道歉。

提要

我有我的TreeView项目的VM类的集合。因此,TreeView绑定到[父]VM实例的集合,每个实例都有一个[子]ren的集合,每个[子]都有其他数据和其他集合(我不会让你厌烦)。

TreeView位于窗体的左侧,在右侧,我有一个用户控件,该控件只能根据所选的TreeViewItem类型可见。

因此,如果TreeView的选定项是“[Child]”类型,则用户控件应该可见。

问题

我正在努力研究如何检测树视图中的项目何时被选中,以便显示/隐藏用户控件。

我想到的一种方法,但不喜欢,是将TreeViewItem的“IsS选”属性绑定到[儿童]虚拟机类,然后向主虚拟机引发一个事件,这将通过DP显示/隐藏统一通信。但这需要一大堆事件等,对我来说,似乎很混乱。

小结

就我的一生而言,我不知道如何做到这一点,我一定累了...或者愚蠢...或者两者兼而有之。

所有我想做的是选择一个项目在TreeView和适当的UserControl显示与TreeViewItem的相关数据,我可以在Windows窗体非常容易,但显然我没有考虑这在一个非常WPF'ish的方式。

任何链接到文章等感谢。

挺起胸膛迎接任何回应。

共有1个答案

陈文景
2023-03-14

在您的情况下,我更喜欢DataTemplateSelector。它是一个对象,提供了一种基于数据绑定对象选择数据模板的方法——这里是您的ViewModel。

只需在窗口中放置ContentControl,并将Content属性绑定到TreeView的SelectedItem属性。将ContentControl的ContentTemplateSelector属性设置为您自己的DataTemplate选择器的引用。

DataTemplateSelector将根据您的需求选择具有定义的UserControl的正确DataTemplate。

   <DataTemplate x:key="VMParent">
      <local:ParentUI DataContext="{Binding}" />
   </DataTemplate/>

   <DataTemplate x:key="VMChild">
      <local:ChildUI DataContext="{Binding}" />
   </DataTemplate/>

问候:)

 类似资料:
  • 问题内容: 我有一个,我正在显示一些ID。我想捕获用户单击的ID并将其显示在上。 上面的代码为我提供了选定的值。但是此代码必须放置在button事件中,当我单击按钮时,它将获得JList值并将其分配给。 但是,我想做的是,只要用户单击其中的一项以实时更新。(无需单击按钮即可触发操作) 问题答案: 一个简单的示例如下所示,使用listselectionlistener

  • FolderListAdapter代码 RecyclerView的Mainactive代码 回收器视图的XML代码 folderList的大小为2 我还检查了适配器的大小。它也是2,我不知道我在哪里犯了错误,为什么它现在在活动中什么都没有显示

  • 我正在尝试实现项的刷取。实施大多以此为基础。 背景: 当用户滑动视图时,视图被移动到正确的位置,但它不会消失。-好 然后:当用户点击(不是滑动)滑动的项目时,转义动画被触发(默认一个)。-好 为了更好地演示行为,我创建了一个GIF。 演示某人是否感兴趣的示例项目。

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

  • 问题内容: 我有两个,一个包含一个由选择查询()填充的客户端列表,另一个包含选定的客户端的详细信息()。我想在显示细节的同时让客户保持选中状态。 XML: Java: 问题答案: 若要在按下时保持列表视图项目的颜色,请在列表视图项目布局中包括以下行: 然后在这样的文件夹中定义: 最后,将此包含在你的中: 这样,在任何时候都只能选择一项。你可以使用以下方式定义颜色值res/values/colors

  • 我刚刚为列表视图项创建了一个项XML,我假设它创建了两个视图,一个在列表项的顶部,另一个在列表项的底部。这是我的XML文件: 它显示如下: 运行项目时不显示带有id/line的行。我能为这个案子做些什么?