作者:洋洋哥2602913063 | 来源:互联网 | 2023-09-04 08:38
将任何XML文档绑定到WPFTreeView我想使用TypeConverter将任何XML文档绑定到WPFTreeView。我最初的解决方案是使用递归,但是当文档很大时,UI被严重
将任何XML文档绑定到WPF TreeView
我想使用TypeConverter将任何XML文档绑定到WPF TreeView。
我最初的解决方案是使用递归,但是当文档很大时,UI被严重束缚。
以下链接讨论了TypeConverter,但针对特定的节点/元素组合: http : //social.msdn.microsoft.com/Forums/en-US/wpf/thread/edd843b7-b378-4c2d-926f-c053dbd7b340
如果不知道XML文档是什么样的,该怎么办? 由于这仅用于显示目的,因此我不太关心function,我只想将XML绑定到TreeView。
它适用于其他节点类型,只需进行一些简单的修改。 首先,必须将HierarchicalDataTemplate.ItemsSource绑定XPath更改为“child :: node()| attribute :: *”以允许任何子节点和任何属性。 然后,为其他NodeType添加DataTriggers。 下面的例子对我有用。 请注意,我添加了各种NodeType的图标,您可能想要删除它们:
所以我问了一个关于如何将任何XML文档绑定到树视图的问题,如下所示:1。通过XML Provider和HierarchicalDataTemplate将XML文档绑定到WPF TreeView。 2.显示XML文档的所有节点,包括具有以下格式的子节点的节点:
>节点1
Node1内容
>ChildNode1 ChildNode1 Contents >ChildNode1'sChildNode ChildNode1'sChildNode Contents
>节点2
Node2 Contents
问题是我的TreeView将每个XmlNode名称属性绑定到TreeItem。 在文本XmlNode的情况下,它会将#text绑定到TreeItem,这不是我想要的。
所以通过MSDN论坛上的post,我得到了我的答案: http : //social.msdn.microsoft.com/Forums/en-US/wpf/thread/cbdb2420-1403-436f-aa7f-b1e3b1acb398/
因此,诀窍是使用触发器根据遇到的节点类型设置值。
警告是其他类型的节点将被忽略,XML文档可能包含不同的元素,因此这可能不适用于遇到的每种类型的节点。
这是XAML:
public Window1() { InitializeComponent(); XmlDataProvider dataProvider = this.FindResource("xmlDataProvider") as XmlDataProvider; XmlDocument doc = new XmlDocument(); // Testdocument doc.LoadXml( @" text1text11 text2text21 text22 "); dataProvider.Document = doc; }
看看我在以下线程上的答案 – 将XML数据绑定到WPF树视图控件我相信这正是您正在寻找的。线程中的链接指向一个post,它为您提供了一个带有选项的分步示例下载源代码。示例的编写方式是将任何 XML文档绑定到WPF树视图
上述就是C#学习教程:将任何XML文档绑定到WPF TreeView分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—编程笔记