动态设置XMLDataProvider源

时间:2016-08-22 19:10:31

标签: c# xml wpf xmldataprovider

虽然我发现的所有示例和源代码都是静态地在XAML中设置资源,但我只能在运行时知道要与XMLDataProvider连接的XML文件的名称。有没有办法在后面的代码中或在XAML中设置?

<Window.Resources>
    <XmlDataProvider x:Key="XMLFoo" Source="Foo.xml" XPath="Foo"/>
</Window.Resources>

它可以是Foo.xml,也可以是Goo.xml。

2 个答案:

答案 0 :(得分:1)

是的,您可以在运行时更改它。不幸的是你无法绑定它,所以你必须在Code-Behind中做一些事情。

这是一个简单的例子:

(this.Resources["XMLFoo"] as XmlDataProvider).Source = new Uri("Goo.xml");

干杯

答案 1 :(得分:1)

如果您尝试只有XamlDataProvider的一个实例,并希望动态更改源代码,我认为在纯XAML中无法绑定Source属性,因为那不是DependencyProperty

从代码隐藏中,您可以将实例作为您的提供商并更改其来源。

var provider = (XmlDataProvider) Resources.FindName("XMLFoo");
provider.Source = new Uri("bar.xml", UriKind.Relative);

或者,您可以使用MVVM并将XmlDataProvider作为ViewModel上的属性公开并将其绑定到View,然后您可以更改Source并从ViewModel本身刷新数据。