如何将代码隐藏中的 xml 字符串加载到绑定到 XML XPath 的数据绑定 UI 控件?
-
09-06-2019 - |
题
我见过的每个示例都在 xmldataprovider 源中使用静态 XML,然后使用 XPath 绑定对 UI 控件进行数据绑定。想法是使用 WPF UI 编辑动态 XML(开发人员在编码期间已知的结构)。
有没有人找到一种方法来加载动态 xml 字符串(例如在运行时从文件加载它),然后使用该 xml 字符串作为 XmlDataprovider 源?
代码片段会很棒。
更新:为了使其更加清楚,假设我想加载我从Web服务调用中收到的XML字符串。我知道xml的结构。因此,我将其数据绑定到 WPF 窗口上的 WPF UI 控件。如何使这项工作有效?Web 上的所有示例都在 XmlDataProvider 节点的 XAML 代码内定义整个 XML。这不是我要找的。我想在代码隐藏中使用 xml 字符串将数据绑定到 UI 控件。
解决方案
下面是我用来从磁盘加载 XML 文件并将其绑定到 TreeView 的一些代码。为了简洁起见,我删除了一些正常的测试。示例中的 XML 是 OPML 文件。
XmlDataProvider provider = new XmlDataProvider();
if (provider != null)
{
System.Xml.XmlDocument doc = new System.Xml.XmlDocument();
doc.Load(fileName);
provider.Document = doc;
provider.XPath = "/opml/body/outline";
FeedListTreeView.DataContext = provider;
}
其他提示
使用 Web 服务获取 XML 并从中创建 XML 文档,然后可以将 xmlDataProvider 的源设置为从服务获取的 XMLDocument。
我没有在带有 Visual Studio 的电脑上测试它,但你应该可以做到这一点。
步骤如您在问题中提到的:
1. Get XML from webservice 2. Convert XML String to XML Document 3. Set the XMLDataProvider.Document value to your XML Document 4. Bind that to your controls
不隶属于 StackOverflow