2009-03-31 2 views
0

Zuerst möchte ich nur sagen, ich bin neu in WPF, so entschuldigen Sie bitte meine Unwissenheit ...Wird WPF eine App.xaml-Datei verarbeiten, wenn die Hostanwendung nicht WPF ist?

Ich erstelle eine .Net-Plug-in für Rhino 4.0. Mit dem Plugin entwickle ich eine Benutzeroberfläche mit WPF.

Die Rhino 4.0 CAD-Engine ist eine MFC/Win32-Anwendung. Das Plugin wird ausgeführt, nachdem die Anwendung ausgeführt wurde, und es erstellt das WPF-Fenster und dann "saugt" das MFC-Fenster hinein.

Meine Frage ist also, sucht WPF nach einer App.xaml-Datei, um auf Ressourcen auf Anwendungsebene zu gelangen, wenn die Hosting-Anwendung keine WPF-App ist?

Wenn nicht, was ist der beste Weg, Ressourcen auf Anwendungsebene zu speichern?

Danke,

Jason

Antwort

1

WPF-Projekte erstellen standardmäßig einen Einstiegspunkt für Ihre Anwendung. Dieser Einstiegspunkt erstellt und initialisiert Ihre Application-abgeleitete Klasse für Sie. Wenn Sie möchten, können Sie immer Ihre Instanz manuell erstellen und speichern auf Anwendungsebene Ressourcen darin:

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

Dies klang wie der beste Ansatz, aber bei der Ausführung kann keine der auf der App.xaml-Seite angegebenen Ressourcen gefunden werden. Ich habe versucht, die "pack: // ,,," -Methode und die "Component/Pfad" -Methode, sowie die geraden Pfad. Keine würde funktionieren. Visual Studio konnte sie finden, aber zur Laufzeit würden sie fehlschlagen. –

0

meine Vermutung ist, es mit dem zu tun hat, wie das Plugin nicht Nashorn laufen macht es mich als separaten Prozess ausgeführt oder ist es zu nennen nur einige, was Sie definiert haben?

Wenn es eine von Ihnen definierte Funktion aufruft, dann könnten Sie einfach den Code dort eingeben, der das Fenster startet?

1

Haben Sie versucht, Ihre Ressourcen zu speichern, was bezieht sich MSDN als ‚Thema Ebene‘?

In einem Ordner namens "<root>\Themes" haben Sie eine Datei namens generic.xaml.

Ich habe dies nicht für ein Projekt, das keine WPF-Anwendung war, versucht, aber der Ansatz könnte für Sie arbeiten.

+0

Danke, ich werde es bald versuchen. –

3

App.xaml wird als Teil einer partiellen Klasse App: Application verwendet. Wenn Ihre Anwendung keine WPF-basierte Anwendungsklasse hat, können Sie Wörterbücher manuell laden und mit der Anwendung zusammenführen und ein Hauptfenster erstellen und anzeigen (Zugriff über statische Methoden der Anwendungsklasse) .

Code geht so ähnlich.

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(); 
Verwandte Themen