WPF,C#中从XmlDataProvider读取数据
我想要一个带有复选框的 TreeView
并且我正在尝试遵循 本教程。但是,在其中,他在运行时为 TreeView
创建了所有内容。我有一个 XML 文件,可以在 XAML 中作为 XmlDataProvider
进行访问:
<XmlDataProvider Source="XmlData/Versions.xml" XPath="//*[count(*)=0]"
x:Key="versionsXml" />
我有一个具有 IsChecked
和 Name
属性的视图模型类,并且我想用它来表示 XML 中的节点:
<Versions>
<Version name="1.0">
<Version name="1.0.001" />
<Version name="1.0.002" />
</Version>
</Versions>
我的 TreeView
将显示带有复选框的叶节点(即 1.0.001 和 1.0.002)。如何不直接使用 XmlDataProvider
的内容,而是使用 List
填充我的 TreeView
?我可以在 DataContext
中创建一个返回 List
的属性,然后将我的 TreeView
绑定到该属性,但我不这样做了解如何在 C# 属性 getter 中从 XmlDataProvider
读取 XML 数据。当我使用 TryFindResource
并将 object
结果转换为 XmlDataProvider
时,Document
和 Data
> 我的 versionsXml
资源(在
中定义)的属性为 null。
I want a TreeView
with checkboxes and I'm trying to follow this tutorial. However, in it, he creates all his content for the TreeView
at runtime. I have an XML file that I have accessible as an XmlDataProvider
in my XAML:
<XmlDataProvider Source="XmlData/Versions.xml" XPath="//*[count(*)=0]"
x:Key="versionsXml" />
I have a view model class with IsChecked
and Name
properties, and I want to use this to represent nodes in my XML:
<Versions>
<Version name="1.0">
<Version name="1.0.001" />
<Version name="1.0.002" />
</Version>
</Versions>
My TreeView
will display leaf nodes (i.e., 1.0.001 and 1.0.002) with a checkbox. How can I populate my TreeView
with not the XmlDataProvider
's content directly, but rather a List<MyViewModel>
? I can create a property in my DataContext
that returns a List<MyViewModel>
, then bind my TreeView
to that property, but I don't know how, in a C# property getter, to read in the XML data from the XmlDataProvider
. When I use TryFindResource
and cast the object
result to XmlDataProvider
, the Document
and Data
properties are null for my versionsXml
resource (defined in <UserControl.Resources>
).
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
阅读此帖子,我执行了以下操作:
然后,在 C# 中访问
XmlDataProvider
数据,因为Data
属性不再为 null:After reading this thread, I did the following:
Then, in C# to access the
XmlDataProvider
data since theData
property was no longer null: