2016-08-22 8 views
1

私が見つけたすべての例とソースが静的にXAMLでリソースを設定することですが、私は、実行時ににXmlDataProviderと接続するためのXMLファイルの名前を知っているだろう。コードの背後またはXAMLのいずれかに設定する方法はありますか?設定にXmlDataProviderソースを動的

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

これはFoo.xmlでもGoo.xmlでもかまいません。

答えて

1

はい、実行時に変更できます。残念ながら、あなたはそれをバインドすることはできませんので、コードビハインドでの作業が必要です。あなたがXamlDataProviderのただ一つのインスタンスを持ってしようとしていると、あなたのソースを動的に変更したい場合は、私はそれがで可能だとは思わない

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

乾杯

1

:ここ

は簡単な例ですSourceプロパティにバインドできないので、純粋なXAMLはDependencyPropertyではありません。

コードビハインドから、インスタンスを取得してソースを変更できます。

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

また、あなたがMVVMを使用して、あなたのXmlDataProviderを公開ViewModelに上のプロパティとして、あなたのビューにバインドすることができ、あなたが、その後のViewModel自身からSourceとリフレッシュデータを変更することができます。

関連する問題