Можно ли добавить один ресурсный словарь в другой? Спасибо за любую помощь.
Как импортировать один ResourceDictionary в другой, в WPF?
Ответ 1
В Dictionary2.xaml определите MergedDictionaries (сразу после открытия тега ResourceDictionary):
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="/Path/to/Dictionary1.xaml" />
</ResourceDictionary.MergedDictionaries>
есть улов: каждый раз, когда вы объединяете словари, вы эффективно создаете копию объединенного словаря. И он рекурсивный - если у вас есть Dict3.xaml и Dict4.xaml, которые загружают Dictionary2.xaml, у вас будет три экземпляра Dictionary1.xaml, созданных
Решение представляет собой SharedResourceDictionary. Реализация в учебнике должна рассматриваться как отправная точка и, вероятно, потребуется некоторый уровень настройки - в зависимости от сценария использования. Google "wpf SharedResourceDictionary" для некоторых исправлений и решений.
От ответа на этот вопрос от XAMeLi
Ответ 2
Отрывок из проекта sketchflow, над которым я работаю, показывает, как объединить ресурсные словари в xaml:
<Application.Resources>
<!-- Resources scoped at the Application level should be defined here. -->
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="/Microsoft.Expression.Prototyping.SketchControls;component/ScrollViewerStyles.xaml"/>
<ResourceDictionary Source="/[ProjectABC];component/[fileXYZ].xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
Это показывает слияние двух дополнительных ресурсных словарей в другой словарь ресурсов.
(Обратите внимание, что порядок может стать важным, если у вас есть стили по умолчанию, определенные более чем в одном месте, поскольку они будут переопределять друг друга)
Ответ 3
Что-то вроде:
ResourceDictionary resources = new ResourceDictionary();
resources.Source = new Uri("/MyModule;component/MyModule.xaml",
UriKind.RelativeOrAbsolute);
Application.Current.Resources.MergedDictionaries.Add(resources);
Возможно, это то, что вы ищете. Мы используем такой код в наших модулях Prism.
Ответ 4
Без дополнительного контекста вам сложно дать конкретный ответ. Вот некоторые возможные релевантные ресурсы по слиянию ресурсных словарей: