Tag: treeview

如何在单个Silverlight TreeView节点中拥有多种类型的子节点?

短款: 我必须显示不同类型的项目的层次结构( TreeView ),并且不确定如何在Silverlight中干净地执行此操作。 在WPF中,可以直接根据类型定义模板( HierarchicalDataTemplate ),但Silverlight中不提供此function。 在Silverlight中,您必须将相同的模板应用于特定节点的所有子节点,因此您最终会使用一次单个怪物模板来处理每个可能类型的节点,并应用于每个节点。 长版(带示例): 为了给出一个更具体(但是做作)的例子,考虑各种文件夹中的档案树视图,其中每个档案可以包含照片,歌曲和其他档案。 每个文件夹可能包含多个子文件夹和存档。 |-Folder |-Folder |-Folder |-Archive | Photo1 | Photo2 | Song1 | Song2 |-Archive | Photo1 | Song1 |-Archive | Photo1 | Photo2 | Photo3 树中的每种类型(文件夹,存档,照片,乐曲)的显示方式都不同。 显而易见的解决方案似乎是为要显示的每种类型的项创建HierarchicalDataTemplate 。 不幸的是,我找不到一个好方法,因为你似乎必须为一个节点的所有子节点指定一个模板类型( ItemsSource={Binding …}, ItemsTemplate={StaticResource TemplateForAllChildren} )。 此要求导致模板滚雪球…存档可以将照片,歌曲和档案作为子项。 由于必须将单个模板应用于所有子项,因此该模板必须能够处理照片,歌曲和档案。 同样,文件夹的模板必须能够处理文件夹和档案,而档案模板现在卡在其中的照片和歌曲,所以它最终成为一个可以处理照片,歌曲,档案和文件夹的巨型模板。 随着更多类型的添加,它们也被集中到一个巨大的模板中。 有没有办法干净地完成这项工作,而不会累积一个巨型模板(和相关的节点视图模型),因为不同的类型被添加到树中? 谢谢! 一些澄清: 感谢到目前为止的答案,但我认为他们可能会让我回到最初的问题。 我可能误解了答案。 考虑TreeView显示: 对于歌曲:带有艺术家/标题的滚动文本框和播放按钮 […]

在WPF树视图中分组数据

我想用两个分组选项(单选按钮)创建一个WPF TreeView 。 因此,数据将在两级层次结构中以两种不同的方式进行分组,最低级别是实际数据项,而这些组只是表示数据的一种方式,以便于理解。 他们也可以按组选择项目(复选框),但我已经弄清楚了这一部分,例如,如果我想表示数据库对象,并希望按模式或对象类型(表,视图,函数,等等。)。 我只是不知道如何开始这两种分组模式。 每当分组模式改变或是否有更简单的方法时,我是否应该完全重构我的ObservableCollection ? 另外,如果我的第二级DataTemplate会根据分组模式略有不同,例如按对象类型分组时需要在第2级显示架构,该怎么办? 谁能给我一些关于如何开始和使用哪些技巧的提示?

TreeView中的多个选择

我在我的程序中使用Windows窗体TreeView控件。 我想允许用户通过拖动鼠标指针来选择同一级别的多个节点(也称为“套索”选择)。 我不认为标准的TreeView允许这样做。 我的问题是实现这一目标的最佳方法是什么? 我是否必须在自定义或派生控件中编写自己的自定义选择行为? 我从哪里开始? 我不需要详细解释。 只是在正确的方向上轻微推动。

Web表单中的Treeview检查父节点上的子节点检查

我使用Treeview控件的System.Web.UI类来显示项目的类别和子类别。 我尝试过以下代码,但没有希望 protected void tvwOrganisation_TreeNodeCheckChanged(object sender, TreeNodeEventArgs e) { if (tvwOrganisation.CheckedNodes.Count > 0) { // the selected nodes. foreach (TreeNode node in tvwOrganisation.CheckedNodes) { if (node.ChildNodes.Count > 0) { foreach (TreeNode childNode in node.ChildNodes) { childNode.Checked = true; } } } } } 有没有办法可以做到这一点,我也尝试过javascript。 还有什么是在Web表单中替换AfterCheck – windows formd事件。

如何在树视图中获取所有扩展节点?

我有一个包含TreeView的程序。 除根之外的所有节点和根目录下的两个节点都是从数据库加载的。 当用户将数据添加到数据库时,它必须自动添加到TreeView中。 我可以通过清除所有节点,添加默认节点并将包括新数据在内的所有数据添加到我的TreeView中来成功完成此操作,但新TreeView的所有节点都将折叠。 我们的客户希望保留所有扩展节点,但仍然添加他刚刚添加的新数据。 有没有办法知道所有扩展节点并在折叠或刷新后再次展开? 谢谢你的回复。

TreeView.ItemContainerGenerator.ContainerFromItem为非根项目返回null。 解决方法?

在下面的示例中,当我选择“String”时,窗口的标题变为“null”。 但我必须获得“String”的容器。 具体来说,我想做相当于SelectedItem = null (但该属性只读取TreeView ,所以我试图到容器将其IsSelected设置为false )。 该怎么办? String namespace WpfApplication1 { public partial class Window1 : Window { public Window1() { InitializeComponent(); } private void Handler(object sender, EventArgs e) { var treeView = sender as TreeView; var container = treeView.ItemContainerGenerator.ContainerFromItem(treeView.SelectedItem); Title = container != null ? container.ToString() : “null”; } } }

WPF树视图,如何更改缩进

我的Treeview基本上有“文件夹”节点,并且在不包含其他项目的项目下面一级。 因此,不需要用于展开/折叠图标的空间(在级别2上)。 我可以放弃这个图标空间,从而减少凹痕。 项目(在示例“机场”中)应向左移动一些像素。 重要:基本上寻找代码解决方案(C#),而不是XAML版本。

在WPF TreeView中对子对象进行分组

我试图让我的树视图按照它们的类别对类似项目的集合进行分组。 为了保持通用性,我的对象层次结构可能如下所示: 对象 对象组#1 项目#1(类型’A’) 项目#2(类型’A’) 项目#3(类型’B’) 项目#4(类型’B’) 现在我的TreeView显示这些对象与对象模型完全一样,但我想要做的是为每个对象类型插入一个TreeView节点,使它看起来像这样: 对象 对象组#1 A型 项目#1 项目#2 B型 项目#3 项目#4 我在这里看到一个类似的问题,有人建议有两个独立的HierarchicalDataTemplates所以我创建了一个’Object Group#1’级别,其中包含一个带有类型列表的TreeView,但这实际上是笨拙的,因为它是一个完整的单独TreeView在一些节点内。 我也一直在尝试使用CollectionViewSource来过滤掉每个类别中的项目,但这对我来说并不是很好,因为我无法弄清楚如何显示它们。 我想我的问题归结为:我如何将HierarchicalDataTemplate组作为子项? 如果有人能指出我正确的方向,我会非常感激。 我可以发布一些代码,如果有人想看,但我真的只是想弄清楚如何做我想要的,所以我的代码现在只是一个非常直接的数据绑定树视图。

将选定的TreeView节点滚动到视图中

我有一个System.Windows.Forms.TreeView停靠在一个面板内。 我正在设置以编程方式选择的节点。 我将使用什么方法或属性让树视图将所选内容滚动到视图中?

Treeview上的VirtualizingStackPanel不是虚拟化

我在这里遇到了一个问题,我想在TreeView中显示一些项目,大约有100.000个元素。 如果我使用默认的WPF TreeView似乎一切正常,但如果我使用自定义TreeView(目前只是一个ItemsControl),虚拟化似乎不再起作用。 在研究网络时,我尝试了一些解决方案,但它们似乎都没有用……这是我的xaml: Items是在带有DataBinding的ObservableCollection中,因此不应该是问题……但它是什么? 映入眼帘, 于尔根