2012-11-06 5 views
7

이 질문과 관련된 많은 항목을 알고 있지만 내 문제에 완벽하게 맞는 솔루션을 찾을 수 없습니다 ... 어쩌면 없습니다.별도의 ResourceDictionary에있는 DataTemplate

현재로서는 사용자가 다른 화면으로 전환 할 수있는 내비게이션을 보유하고 있습니다. UserControl이 있습니다. 이 화면은 내 UserControlResources 부분에 DataTemplate으로 정의됩니다.

뭐 그런 :

<DataTemplate TargetType={x:Type vm:ViewModel1}> 
    ... 
</DataTemplate> 
<DataTemplate TargetType={x:Type vm:ViewModel2}> 
    ... 
</DataTemplate> 
<DataTemplate TargetType={x:Type vm:ViewModel3}> 
    ... 
</DataTemplate> 

좋아하고 제가 싶어 할 별도의 XAML 파일이 DataTemplates을 배치하고있는 UserControl의 자원 부분에이 파일을 링크하는 것입니다. 이 새로운 XAML Resource Dictionary를 내 응용 프로그램에서 전역 적으로 사용할 수 있도록 만들지 않아도됩니까 (App.xaml 리소스에 추가)? 아니면 다른/더 좋은 방법이 있습니까?

답변

13

아니요. 글로벌이 아니어야합니다. app.xaml에서와 마찬가지로 사용자 정의 컨트롤 리소스 섹션에 리소스 사전을 선언하기 만하면됩니다.

<Control.Resources> 
    <ResourceDictionary> 
     <ResourceDictionary.MergedDictionaries> 
      <ResourceDictionary Source="Dictionary1.xaml"/> 
     </ResourceDictionary.MergedDictionaries> 
    </ResourceDictionary> 
</Control.Resources> 

필요한 경우 상대 파일 경로 "..\Folder\Folder\Dictionary.xaml"을 사용하여 파일을 가리킬 수 있습니다.