虽然我发现的所有示例和来源都是在 XAML 中静态设置资源,但我只会在运行时知道要与 XMLDataProvider 连接的 XML 文件的名称。有没有办法在代码后面或 XAML 中设置?
<Window.Resources>
<XmlDataProvider x:Key="XMLFoo" Source="Foo.xml" XPath="Foo"/>
</Window.Resources>
它可以是 Foo.xml,也可以是 Goo.xml。
虽然我发现的所有示例和来源都是在 XAML 中静态设置资源,但我只会在运行时知道要与 XMLDataProvider 连接的 XML 文件的名称。有没有办法在代码后面或 XAML 中设置?
<Window.Resources>
<XmlDataProvider x:Key="XMLFoo" Source="Foo.xml" XPath="Foo"/>
</Window.Resources>
它可以是 Foo.xml,也可以是 Goo.xml。
是的,您可以在运行时更改它。不幸的是你不能绑定它,所以你必须在 Code-Behind 中做一些事情。
这是一个简单的例子:
(this.Resources["XMLFoo"] as XmlDataProvider).Source = new Uri("Goo.xml");
干杯
如果您只想拥有一个实例XamlDataProvider
并且希望您的源动态更改,我认为在纯 XAML 中这是不可能的,因为您无法绑定到Source属性,因为它不是DependencyProperty
.
从代码隐藏中,您可以获取您的提供者的实例并更改它的源。
var provider = (XmlDataProvider) Resources.FindName("XMLFoo");
provider.Source = new Uri("bar.xml", UriKind.Relative);
或者,您可以使用 MVVM 并将您的XmlDataProvider
作为 ViewModel 上的属性公开并将其绑定到您的 View,然后您可以Source
从 ViewModel 本身更改和刷新数据。