У меня есть приложение Windows Forms, которое должно содержать элемент управления WPF во время выполнения. У меня есть базовый хостинг и взаимодействие (с помощью элемента управления ElementHost), и все работает нормально, пока я не попытаюсь сделать что-то, что требует, чтобы элемент управления WPF использовал определенные пользовательские словари ресурсов, которые определены. (Элемент управления WPF и все его ресурсные словари определены в одной и той же DLL библиотеки управления WPF.)
Как только это произойдет, я получаю кучу ошибок, которые выглядят так:
System.Windows.ResourceDictionary Warning: 9 : Resource not found; ResourceKey='DocumentHeaderInterestStyle'
Я нашел ссылку ссылка ( ссылка кажется мертвой из-за архивирования, this может быть той же статьей, на которую первоначально ссылались). что об этом говорит, но похоже, что статья приближается к чему-то еще со стороны WPF, но я действительно не хочу вносить изменения в элемент управления WPF, поскольку все работает в автономном приложении WPF.
Если единственный способ сделать это - внести изменения со стороны WPF, я могу получить эти изменения (я не несу ответственность за библиотеку управления WPF, но человек, который также работает для той же компании, проблема, отличная от времени, чтобы внести изменения.), но я надеюсь на то, что я могу сделать на стороне WinForms, чтобы заставить это работать.
В библиотеке управления WPF есть файл словаря ресурсов с именем "Default.xaml", определенный в проекте со следующими свойствами:
Действие сборки: Страница Копировать в выходной каталог: не копировать Пользовательский инструмент: MSBuild: компиляция
В автономном приложении 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>
Кажется, что библиотека управления уже должна знать, как получить свои ресурсы. Использование Resource.MergedDictionaries.Add() кажется, что оно должно работать, но где я могу получить экземпляр существующего словаря?