虽然我找到的所有示例和源代码都是静态地设置XAML中的资源,但我只能在运行时知道要与XMLDataProvider连接的XML文件的名称。有没有办法在后台代码或XAML中进行设置?
<Window.Resources>
<XmlDataProvider x:Key="XMLFoo" Source="Foo.xml" XPath="Foo"/>
</Window.Resources>可以是Foo.xml,也可以是Goo.xml。
发布于 2016-08-23 04:13:39
是的,你可以在运行时改变它。不幸的是,你不能绑定它,所以你必须在代码隐藏中做一些事情。
下面是一个简单的例子:
(this.Resources["XMLFoo"] as XmlDataProvider).Source = new Uri("Goo.xml");干杯
发布于 2016-08-23 04:18:32
如果您只想拥有XamlDataProvider的一个实例并希望动态更改源代码,我认为这在纯Source中是不可能的,因为您不能绑定到DependencyProperty属性,因为它不是一个XAML。
通过代码隐藏,您可以获取您的提供者的实例并更改其源代码。
var provider = (XmlDataProvider) Resources.FindName("XMLFoo");
provider.Source = new Uri("bar.xml", UriKind.Relative);或者,您可以使用MVVM并将您的XmlDataProvider公开为ViewModel上的属性,并将其绑定到您的视图,然后您可以更改Source并从ViewModel本身刷新数据。
https://stackoverflow.com/questions/39087056
复制相似问题