WPF используется в приложении WinForms, куда класть ресурсы приложения?
В настоящее время мы размещаем несколько элементов управления WPF в приложении WinForms. Приложение запускается с использованием метода System.Windows.Forms.Application.Run(...)
и элементов управления WPF, размещенных с помощью ElementHost
.
В обычном WPF-приложении я бы определил объект System.Windows.Application
(App.xaml
) и выполнил вызов на нем. Как правило, все ресурсы WPF на уровне приложений будут поступать туда. У нас этого нет.
Как я могу указать ресурсы уровня приложения для элементов управления WPF, но все еще работать как приложение WinForms?
Ответы
Ответ 1
В размещенной среде у вас нет простого доступа к приложению, Dr WPF имеет несколько методов работы в размещенном сценарии http://drwpf.com/blog/2007/10/05/managing-application-resources-when-wpf-is-hosted/.
Я лично использую свой класс SharedResources в рабочем проекте, VB6 Form hosting Winforms UserControl, на котором размещается ElementHost, где размещается WPF UserControl с широкой темой приложения для элементов управления WPF.
Ответ 2
Если вы размещаете элементы управления WPF в приложении WinForms, у вас нет объекта Application
, на котором размещаются ресурсы приложения. Фокус в том, чтобы создать такой объект, загрузить ваши глобальные ресурсы и объединить их в ResourceDictionary
.
Вот пример этого кода:
http://www.snippetsource.net/Snippet/26/load-application-level-resources-in-winforms-hosted-wpf-controls (исправлена ссылка)