Будет ли WPF обрабатывать файл App.xaml, если хост-приложение не WPF? - PullRequest
0 голосов
/ 31 марта 2009

Сначала я просто хочу сказать, что я новичок в WPF, поэтому, пожалуйста, извините за мое невежество ...

Я создаю плагин .Net для Rhino 4.0. С помощью плагина я разрабатываю пользовательский интерфейс с использованием WPF.

Механизм CAD Rhino 4.0 представляет собой приложение MFC / Win32. Плагин запускается после запуска приложения, создает окно WPF, а затем «всасывает» в него окно MFC.

Итак, мой вопрос: ищет ли WPF файл App.xaml для доступа к ресурсам уровня приложения, если хост-приложение не является приложением WPF?

Если нет, как лучше хранить ресурсы уровня приложения?

Спасибо

Jason

Ответы [ 4 ]

3 голосов
/ 17 октября 2009

App.xaml используется как часть частичного класса App: Application. Если ваше приложение не имеет класса приложения на основе WPF, Вы можете вручную загрузить словари и объединить их с приложением, создать главное окно и показать его (доступ через статические методы класса Application).

Код выглядит примерно так.

var reader = new XamlReader();
var dictionary = reader.read("path to xaml file") as ResourceDictionary;
if (dictionary != null)
    Application.MergedDictionaries.Merge(dictionary);

var mainWindow = new MyMainWindow();
mainWindow.Show();
1 голос
/ 31 марта 2009

Проекты WPF по умолчанию создают точку входа для вашего приложения. Эта точка входа создает и инициализирует ваш класс Application. Если вам нужно, вы всегда можете создать свой экземпляр вручную и сохранить в нем ресурсы уровня приложения:

App app = new App();
app.InitializeComponent();
app.Run();
1 голос
/ 30 апреля 2009

Вы пытались хранить свои ресурсы на том, что в MSDN называется "уровень темы"?

В папке с именем "<root>\Themes" есть файл с именем generic.xaml.

Я не пробовал это для проекта, который не был приложением WPF, но подход может работать для вас.

0 голосов
/ 31 марта 2009

Полагаю, это связано с тем, как Rhino запускает ваш плагин, он запускает его как отдельный процесс или просто вызывает определенную вами вещь?

Если он вызывает определенную вами функцию, вы можете просто поместить туда код, который будет запускать окно?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...