虽然我发现的所有示例和源代码都是静态地在XAML中设置资源,但我只能在运行时知道要与XMLDataProvider连接的XML文件的名称。有没有办法在后面的代码中或在XAML中设置?
<Window.Resources>
<XmlDataProvider x:Key="XMLFoo" Source="Foo.xml" XPath="Foo"/>
</Window.Resources>
它可以是Foo.xml,也可以是Goo.xml。
答案 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本身刷新数据。