动态设置 XMLDataProvider 源
Set XMLDataProvider source dynamically
虽然我找到的所有示例和来源都是静态设置 XAML 中的资源,但我只会在 运行 时间知道要连接的 XML 文件的名称XML数据提供者。有没有办法在代码后面或 XAML?
中设置
<Window.Resources>
<XmlDataProvider x:Key="XMLFoo" Source="Foo.xml" XPath="Foo"/>
</Window.Resources>
可能是 Foo.xml,也可能是 Goo.xml。
是的,您可以在运行时更改它。不幸的是你不能绑定它,所以你必须在代码隐藏中做一些事情。
这是一个简单的例子:
(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 上的 属性 并将其绑定到您的视图,然后您可以更改 Source
并刷新数据ViewModel 本身。
虽然我找到的所有示例和来源都是静态设置 XAML 中的资源,但我只会在 运行 时间知道要连接的 XML 文件的名称XML数据提供者。有没有办法在代码后面或 XAML?
中设置<Window.Resources>
<XmlDataProvider x:Key="XMLFoo" Source="Foo.xml" XPath="Foo"/>
</Window.Resources>
可能是 Foo.xml,也可能是 Goo.xml。
是的,您可以在运行时更改它。不幸的是你不能绑定它,所以你必须在代码隐藏中做一些事情。
这是一个简单的例子:
(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 上的 属性 并将其绑定到您的视图,然后您可以更改 Source
并刷新数据ViewModel 本身。