2016-08-22 4 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

예 런타임 중에 변경할 수 있습니다. 불행히도 바인딩 할 수 없으므로 코드 비하인드에서 작업해야합니다. 여기

은 간단한 예제 :

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

건배

1

당신이 XamlDataProvider의 한 인스턴스가하려고하는 동적 변경, 나는 그것이 가능하다고 생각하지 않는 소스를 원하시면 DependencyProperty이 아니기 때문에 Source 속성에 바인딩 할 수없는 순수 XAML입니다.

코드 숨김에서 공급자 인스턴스를 가져 와서 소스를 변경할 수 있습니다.

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

다른 방법으로, MVVM을 사용하고 노출 당신의 XmlDataProvider을 뷰 모델에 속성으로하고보기에 바인딩 할 수 있습니다, 당신은 다음 Source을 변경하고 뷰 모델 자체에서 데이터를 새로 고칠 수 있습니다.

관련 문제