У меня есть приложение Windows Forms, которое должно содержать элемент управления WPF во время выполнения. У меня есть базовый хостинг и взаимодействие завершено (с использованием элемента управления ElementHost), и все работает нормально, пока я не попытаюсь сделать что-то, требующее от элемента управления WPF использования определенных пользовательских словарей ресурсов. (Элемент управления WPF и все его словари ресурсов определены в одной библиотеке DLL элемента управления WPF.)
Как только это происходит, я получаю кучу ошибок, которые выглядят так:
System.Windows.ResourceDictionary Warning: 9 : Resource not found; ResourceKey='DocumentHeaderInterestStyle'
Я нашел одну ссылку ( ссылка кажется мертвой из-за архивирования , эта может быть той же статьей, на которую изначально ссылалась ). это говорит об этом, но похоже, что статья больше подходит к WPF, но я не хочу вносить изменения в элемент управления WPF, поскольку все работает в автономном приложении WPF.
Если единственный способ сделать это - внести изменения на стороне WPF, я могу внести эти изменения (я не отвечаю за управляющую библиотеку WPF, но человек, который также работает в той же компании, так что это не так. проблема не в том, чтобы уделять время внесению изменений.) но я надеюсь, что что-то, что я могу сделать на стороне WinForms, чтобы это заработало.
В управляющей библиотеке WPF есть файл словаря ресурсов с именем «Default.xaml», определенный в проекте со следующими свойствами:
Действие сборки: страница
Копировать в выходной каталог: не копировать
Пользовательский инструмент: MSBuild: Compile
Автономное приложение WPF имеет следующую запись в своем файле App.xaml:
<ResourceDictionary x:Uid="ResourceDictionary_1">
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary x:Uid="ResourceDictionary_2" Source="/SmartClient.Infrastructure;component/Themes\Default.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
Похоже, что управляющая библиотека уже должна знать, как получить свои ресурсы. Использование Resources.MergedDictionaries.Add () похоже, что оно должно работать, но где мне взять экземпляр существующего словаря?