Будет ли WPF обрабатывать файл App.xaml, если приложение для размещения не является WPF?

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

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

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

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

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

Спасибо,

Джейсон


person Jason Stevenson    schedule 31.03.2009    source источник


Ответы (4)


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

App app = new App();
app.InitializeComponent();
app.Run();
person Kent Boogaart    schedule 31.03.2009
comment
Это звучит как лучший подход, но при выполнении он не может найти ни один из ресурсов, указанных на странице App.xaml. Я попробовал метод pack://,,, и метод компонента/пути, а также прямой путь. Ни один не будет работать. Visual Studio могла их найти, но во время выполнения они не работали. - person Jason Stevenson; 01.04.2009

App.xaml используется как часть частичного класса App : Application. Если в вашем приложении нет класса 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();
person Danny Varod    schedule 17.10.2009

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

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

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

person Drew Noakes    schedule 30.04.2009
comment
Спасибо скоро попробую. - person Jason Stevenson; 04.05.2009

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

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

person Peter    schedule 31.03.2009