2016-08-31 1 views
0

Ich habe WPF Anwendung mit einigen WPF Windows. Aber mein Hauptfenster ist WinForms und ich muss das Programm damit starten. Aber wie kann ich das machen? Das ist meine App.xaml Datei:WPF-Anwendung mit WinForms-Fenster starten

<Application x:Class="Player.App" 
      xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
      StartupUri="UI/MainWindow.xaml"> 
    <Application.Resources> 
    </Application.Resources> 
</Application> 

Wenn ich versuche, StartupUri="UI/MainWindow.xaml" mit StartupUri="UI/Form1.cs" zu ersetzen, ich "System.IO.IOException", "Cannot find "ui/form1.cs". Ist es überhaupt möglich, meine App mit WinForms Fenster zu starten?

Antwort

1

Zuerst gehen Sie zu App.xaml und entfernen Sie StartupUri="UI/MainWindow.xaml". Gehen Sie dann zu App.xaml.cs und überschreiben Sie die OnStartup-Methode. Dort können Sie Ihr Win Forms-Fenster instanziieren und ausführen.

protected override void OnStartup(StartupEventArgs e) 
{ 
    base.OnStartup(e); 
    var form = new Form1(); 
    form.Show(); 
} 
+0

Jetzt habe ich ein Problem: Meine 'OnExit' Methode wird nicht aufgerufen, wenn ich das Fenster schließe. Wie kann ich das beheben? – JustLogin

+0

@JustLogin Erstellen Sie eine öffentliche Methode in einer beliebigen xaml.cs, die Application.Current.Shutdown() aufruft. Rufen Sie das aus Form1.FormClosed auf. –

0

Es ist ein guter Artikel von MSDN, die Ihnen ein Beispiel liefert, wie Sie ein Windows Forms-Element in XAML zu integrieren: https://msdn.microsoft.com/de-de/library/ms742875(v=vs.110).aspx

Es sollte für Ihre nehme hilfreich sein.

+0

Es funktioniert nicht für mich. Ja, ich kenne die 'WindowsFormsHost' Klasse, aber es hat ein Problem. Da meine App ein Media Player ist, benutze ich 'axwindowsmediaplayer', um Videos abzuspielen (' MediaElement' ist aufgrund schlechter Performance keine Lösung). Es funktioniert gut, aber beginnt zu verzögern, wenn es in WPF gehostet wird. – JustLogin