我见过的每个示例都在 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
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top