2012-11-06 4 views
7

Я знаю, что существует много тем, связанных с этим вопросом, но я не мог найти решение, которое идеально подходит для моей проблемы ... может быть, их нет?DataTemplate в отдельном ResourceDictionary

На данный момент у меня есть UserControl, который содержит навигацию, которая позволяет пользователю переключаться между различными экранами. Эти экраны определены в части Resources моего UserControl как DataTemplate.

Нечто подобное:

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

Хорошо и то, что я хочу сделать, это поместить эти DataTemplates в отдельном файле XAML и связать этот файл часть ресурсов в UserControl в. Должен ли я действительно сделать этот новый словарь ресурсов XAML глобально доступным в моем приложении (добавив его в ресурсы App.xaml) или есть другой/лучший способ?

ответ

13

Нет, вам не обязательно делать это глобальным. Просто объявите ресурсный словарь в разделе ресурсов пользовательского управления так же, как и в app.xaml.

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

Вы можете указать файл, используя относительный путь к файлу "..\Folder\Folder\Dictionary.xaml", если вам нужно.

Смежные вопросы