Ответ 1
В WPF ссылки ресурсов работают как дерево. Каждый элемент управления имеет ресурс, а элемент управления детьми может обращаться к родительским ресурсам. Глобальный словарь ресурсов приложения находится в файле App.xaml. В этом файле вы можете включить несколько ресурсных словарей в виде объединенного словаря. См. Пример этого кода:
<?xml version="1.0" encoding="utf-8"?>
<Application ...>
<Application.Resources>
<ResourceDictionary>
<vm:ViewModelLocator x:Key="Locator" d:IsDataSource="True" />
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="View\SomeFileDictionary.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
</Application>
SomeFileDictionary.xaml
находится в папке View
моей структуры проекта. И выглядит следующим образом:
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:ViewModel="clr-namespace:Cepha.ViewModel"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
... >
<DataTemplate DataType="{x:Type ViewModel:SomeType}">
<TextBox .../>
</DataTemplate>...
И каждый словарь или шаблон данных, определенный в этом файле (или App.xaml), можно ссылаться в любом месте вашего проекта. Надеюсь, это поможет...