问题标签 [hierarchicaldatatemplate]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
wpf - 具有混合类型的 WPF Treeview 数据绑定分层数据
WPF Treeview Binding 的情况有点复杂。我花了过去 2 天的时间尝试谷歌它,这是我想出的关闭,但它并没有解决问题。
情况如下:
我有一个看起来像这样的对象:
每个类别可以有一个对象列表和子类别。我有这样做的理由,这对我和我正在编写的应用程序来说完全有意义。
实际的对象构造可能看起来像这样:
现在,我正在尝试将这种关系数据绑定到树视图。我希望 TreeView 看起来与上述对象构造几乎相同。
到目前为止,我的 XAML Treeview 看起来像这样:
这适用于主要类别列表及其每个子产品。但它并没有更深入地显示每个类别下的子类别。
有没有办法直接使用模板来执行此操作,以便选择每个项目(类别或产品)?我正在使用 MVVM 模式,不想求助于使用后面的代码,但如果有必要的话。
silverlight - 如何在 Silverlight 中创建两个相互引用的 HierarchicalDataTemplate?
鉴于:
- 数据模板不能由 TargetType 分配
- StaticResource 引用只能引用以前
如何在 TreeView 中对以下情况进行模板化?
这种结构很适合一棵看起来像这样的树:
由于. TargetType
_ HierarchicalDataTemplate
在 Silverlight 中,我们必须做更多类似的事情:
这显然无法工作,因为ResourceTemplate
无法引用PropertyTemplate
,因为它是在 XAML 文档中定义的。那么,如何解决这个先有鸡还是先有蛋的问题呢?
silverlight - 带有 ObservableCollections 的 ObservableCollection 无法正确呈现
我对 Silverlight 体验相对较新,我正在尝试创建一个带有 DomainService 的 MVVM 应用程序,该应用程序将 POCO 作为模型返回。我有一个 UserControl,它有一个 TreeView,其 ItemsSource 设置为绑定到一个 ObservableCollection 类型,该类型具有 ObservableCollection 作为其属性之一,并且该集合属于具有 ObservableCollection 属性的类型。所以我使用 HierarchicalDataTemplate 作为带有 TextBlocks 的 TreeView 的 ItemTemplate 来呈现每个项目的 Name 属性。我将在下面包含一些代码。
所以类将是这样的:
基本上,我的集合是从 DataRepository 中填充的,该方法使用获取 A、B 和 C 列表的方法。通过 foreach 循环使用 LINQ 适当地添加每个实例。并返回一个列表。该方法正常工作,因为我从 default.aspx.cs 调用它并逐步确认所有数据都已正确添加。
但我的问题是,当它在屏幕上呈现时,没有一个集合是正确的。例如,“A”的“B”子集合的第一项应该有超过 4000 的计数,但没有显示。然而,应该在第一个“A”的集合“Bs”中的“B”的第一个项目显示为“A”的第二个项目。
(应该是什么的例子)
a1
- b1.1
- c1.1.1
- c1.1.2
- c1.1.3
- b1.2
- c1.2.1
- c1.2.2
- b1.1
a2
- b2.4
- c2.4.1
- c2.4.2
- c2.4.3
- b2.4
a3
- b3.6
- c3.6.1
- c3.6.2
- c3.6.3
- b3.6
a4
- b4.8
- c4.8.1
- c4.8.2
- c4.8.3
- b4.8
(显示的示例)
- a1
- a2
- b2.2
- c2.2.2
- b2.2
- a3
- a4
- b4.4
- c4.4.4
- b4.4
经过一番调查,我看到的唯一模式是层次结构基于相同的 ID。
以下是代码示例:
(DataContext 由 UserControl 资源设置)
视图模型
对于这个问题的长度,我深表歉意,我希望不要如此含糊,并获得一些有用的建议。这个问题已经困扰我几天了,我已经准备好继续前进了。请帮助我摆脱困境。提前致谢。如果您有任何对我的 MVVM 知识有帮助的好的链接,我也将不胜感激。
我的环境是: - Asp.Net 4 - Silverlight 4 - VisualStudio 2010
wpf - 添加子节点后,WPF TreeView 节点变得不可选择
我对 WPF TreeView 有一个很大的问题。我已经设置了一棵与此类似的树。
TreeView 绑定到名为 Projects 的 DependencyProperty,它是 xaml 的代码隐藏文件中的 ObservableCollection。树绑定到的类的基本结构遵循树的结构。因此 Project 包含一个自定义集合,该集合实现了 INotifyPropertyChanged 和 ICollectionChanged 接口。该集合可通过名为 Steps 的属性访问,并包含 Step 对象。Step 类还有一个可从名为 Loads 的属性访问的相同自定义集合的实例,并包含 Load 对象。
现在,当我使用项目中的任何对象时,树的行为正确,因为节点出现、消失并随着嵌套集合集的变化而正确变化。在大多数情况下,一切正常。
虽然我没有在上面的 Xaml 中展示它,但上面的每个节点都添加了自己特定的上下文菜单。该上下文菜单中的选项之一是添加对象。例如,如果您右键单击 Step 节点,您可以选择在其下方添加一个 Load 节点。将 Load 类添加到 Step 对象的 Loads 属性中确实会导致节点很好地显示在树中。
因此,例如,代码看起来类似于:
好的,这是我一直在尝试解决的最长时间的问题。在该新节点出现在树中之后,它的父节点不再可选择。因此,在给定的示例中,您不能选择拥有新添加的 Load 节点的 Step 节点。您仍然可以执行 DoubleClick 和 RightClick 之类的操作并触发事件,但只是尝试用鼠标左键单击不会导致 Step 节点被选中或获得焦点。我已经尝试了我能想到的一切,但我终其一生都无法弄清楚为什么不这样做。
现在我可以点击树中的其他节点,它们可以选择就好了。并且在这样做之后,以前不允许被选择的节点然后恢复它以前的功能并再次能够被选择。
所以发生的事情是您添加了一个新节点,它会显示出来,并且在您选择 TreeView 的其他部分之前无法选择它的父节点,然后一切都很好。
wpf - 虚线连接 wpf TreeView 中的节点
我正在寻找一种方法来绘制虚线以连接 wpf 中的节点TreeView
。问题似乎是我正在使用HierarchicalDataTemplate
而不是填充TreeView
with TreeViewItem
s。
我找到了这篇文章: http ://social.msdn.microsoft.com/forums/en-US/wpf/thread/30cb182c-9419-40bd-946e-87971515fb95/
Witch 在填充它TreeViewItem
的情况下很好地解决了它,但我的问题是,我将如何解决它HierarchicalDataTemplate
?
我的模板看起来像这样:
关于如何解决问题的任何解决方案或好的提示?
wpf - WPF TreeView 从不使用 HierarchicalDataTemplate 填充
使用下面的代码,我的树视图永远不会填充。谁能看到我做错了什么?
谢谢
c# - 如何在单个 Silverlight TreeView 节点中拥有多种类型的子节点?
短版:
我必须显示TreeView
不同类型项目的层次结构 (),并且不确定如何在 Silverlight 中干净利落地执行此操作。在 WPF 中,可以直接HierarchicalDataTemplate
根据类型定义模板 ( ),但 Silverlight 中不提供此功能。在 Silverlight 中,您似乎必须将相同的模板应用于特定节点的所有子节点,因此您最终会得到一个处理所有可能类型节点的单一怪物模板,应用于每个节点。
长版(带示例):
举一个更具体(但做作)的例子,考虑不同文件夹中档案的树状视图,其中每个档案可以包含照片、歌曲和其他档案。每个文件夹可能包含多个子文件夹和档案。
树中的每种类型(文件夹、存档、照片、歌曲)的显示方式不同。显而易见的解决方案似乎是为HierarchicalDataTemplate
要显示的每种类型的项目创建一个。不幸的是,我找不到这样做的好方法,因为您似乎必须为节点 ( ItemsSource={Binding ...}, ItemsTemplate={StaticResource TemplateForAllChildren}
) 的所有子节点指定一个模板类型。
This requirement causes the template to snowball... an archive can have Photos, Songs, and Archives as children. Because a single template must be applied to all children, that one template must be able to handle Photos, Songs, and Archives. Similarly, a Folder's template must be able to handle Folders and Archives, and the Archive template now has Photos and Songs stuck in it, so it all ends up as one giant template that can handle Photos, Songs, Archives, and Folders. As more types are added, they also get lumped into the one huge template.
Is there any way to do this cleanly, without accumulating one giant template (and associated node viewmodel) as different types are added to the tree?
Thanks!
Some Clarification:
Thanks for the answers so far, but I think they may just lead me back to the original issue. I may be misunderstanding the answer.
Consider the TreeView showing:
For Songs: a scrolling textbox with artist/title, and a play button
For Pictures: a thumbnail image, and a star rating control
For Archives: An archive image, with a progress bar showing the compression
For Folders: A plain label showing the folder name
As far as I can tell, the only way to achieve this is to have 1 giant HierarchicalDataTemplate containing a scrolling textbox, a play button, a thumbnail viewer, a star control, an image control, a progress bar, and a label. I'd then just selectively hide all but the one or two controls that actually apply to the node.
In WPF I could associate templates with a node type, so each node could use an appropriate template. I'm wondering if there's a way to do this in Silverlight.
Thanks again!
wpf - Silverlight 与 WPF - 带有 HierarchialDataTemplate 的 Treeview
因此,以下在 WPF 中很容易,但在 Silverlight 中您将如何做到这一点?
请注意,这里的技巧是在同一级别上显示组和条目。此外,您不知道条目嵌套的深度,它们可能位于第一级或第 n 级。这在 Silverlight 中很难,因为您在 H.DataTemplate(或任何 DataTemplate)中缺少 DataType="{x:Type local:Group}" 属性。构建我自己的自定义 DataTempalteSelector 也不起作用,因为 Hierarchial ItemsSource 丢失了。(这只是给了我一个新的想法,我将很快调查)
例子:
你的课程:
你的xml:
c# - 分层数据网格子项
MainXaml.Cs
嗨,我在加载与其父源相关的子数据时没有问题。问题是,如果我尝试扩展另一行,它会为其加载第一个数据。例如,如果我将 row1 展开,它会显示正确的子表,但如果我转到 row2 并展开它,它的子记录用于 row1。我尝试寻找答案并放置 parent_IsExpandedChanged 事件来处理它,但它仍然不会显示正确的数据。如果我尝试再次重新加载应用程序并尝试展开第 2 行或第 3 行。它的子项是正确的,但如果我展开另一行,它将显示第 2 行或第 3 行的子项。请帮助我做错了什么
wpf - 带有嵌套子列表的 WPF TreeView、实体框架和 HierarchicalDataTemplate
我正在尝试使用 HierarchicalDataTemplate(s) 将复杂的数据结构绑定到 WPF TreeView。数据集合作为 MyObject 的 IList 存储在我的 ViewModel 中 - MyObject 有几个属性,其中一些属性是它们自己的列表。
我试图实现的输出类似于:
但是,我似乎无法获得我所见过的复合集合,其中提到了一些工作的地方-