Ответ 1
Простой способ:
В Dictionary2.xaml
укажите MergedDictionaries (сразу после открытия тега ResourceDictionary
):
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="/Path/to/Dictionary1.xaml" />
</ResourceDictionary.MergedDictionaries>
И затем
<Style x:Key="headerStyle" TargetType="TextBlock" BasedOn="{StaticResource basicStyle}" >
.....
</Style>
Это решит проблему, но, как и все простые решения, есть улов: каждый раз, когда вы объединяете словари, вы эффективно создаете копию объединенного словаря. И он рекурсивный - если у вас есть Dict3.xaml и Dict4.xaml, которые загружают Dictionary2.xaml, у вас будет три экземпляра Dictionary1.xaml. Со сложной структурой зависимостей вы можете добраться до точки, в которой у вас есть 19 000 объектов словаря в памяти при запуске приложения, а объем памяти - от 180 МБ до 1200 МБ (TrueStory ™:().
Решение является SharedResourceDictionary. Реализация в учебнике должна рассматриваться как отправная точка и, вероятно, потребуется некоторый уровень настройки - в зависимости от сценария использования. Google "wpf SharedResourceDictionary" для некоторых исправлений и решений.