В WPF как ссылаться на статический ресурс, определенный в другом файле XAML?

в WPF как ссылаться на статический ресурс, определенный в другом файле XAML? Это в том же проекте.

2 ответов


другой файл XAML должен быть словарем ресурсов. Вы объединяете его в текущий файл, используя свойство MergedDictionaries текущего ResourceDictionary. См.Объединенные Словари Ресурсов на MSDN. Пример:

<Page.Resources>
  <ResourceDictionary>
    <ResourceDictionary.MergedDictionaries>
      <ResourceDictionary Source="myresourcedictionary.xaml"/>
      <ResourceDictionary Source="myresourcedictionary2.xaml"/>
    </ResourceDictionary.MergedDictionaries>
  </ResourceDictionary>
</Page.Resources>

затем в этом объекте страницы вы можете ссылаться на статические ресурсы, определенные в myresourcedictionary.xaml или myresourcedictionary2.xaml.


"другой файл XAML" может означать несколько разных вещей:

  • App.xaml: ресурсы автоматически включаются в дерево ресурсов всего, что открыто, поэтому вам не нужно делать ничего лишнего.
  • окно или страница .xaml: ресурсы могут быть доступны любому дочернему экземпляру объекта, например UserControl, который используется в окне.
  • ResourceDictionary: необходимо явно объединить в дерево ресурсов где-то выше, где оно находится используемый. Это может быть приложение.в XAML, Windowxx.xaml или какой-либо элемент нижнего уровня. Использовать Объект ResourceDictionary.Для этого нужно объединить усилия.

есть также много альтернативных способов указать путь, но это самый простой:

<Window>
    <Window.Resources>
      <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
          <ResourceDictionary Source="Resources/MyResourceDict.xaml" />
        </ResourceDictionary.MergedDictionaries>
      </ResourceDictionary>
    </Window.Resources>