2009-03-31 2 views
0

Сначала я просто хочу сказать, что я новичок в WPF, поэтому, пожалуйста, извините мое невежество ...Будет ли WPF обрабатывать файл App.xaml, если хостинг-приложение не является WPF?

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

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

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

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

Спасибо,

Джейсон

ответ

1

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

App app = new App(); 
app.InitializeComponent(); 
app.Run(); 
+1

Это звучит как лучший подход, но при его выполнении не удается найти какие-либо ресурсы, указанные на странице App.xaml. Я пробовал метод «pack: // ,,,» и метод «компонент/путь», а также прямой путь. Никто не будет работать. Visual Studio может найти их, но во время выполнения они потерпят неудачу. –

0

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

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

1

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

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

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

+0

Спасибо, я скоро попробую. –

3

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