2016-08-31 73 views
0

我有WPF應用程序與一些WPF窗口。但我的主窗口是WinForms,我需要用它開始編程。但我該怎麼做?這是我的App.xaml文件:用WinForms窗口啓動WPF應用程序

<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> 

如果我嘗試用StartupUri="UI/Form1.cs"更換StartupUri="UI/MainWindow.xaml",我得到"System.IO.IOException", "Cannot find "ui/form1.cs"。是否可以用WinForms窗口啓動我的應用程序?

回答

1

首先轉到App.xaml並刪除StartupUri="UI/MainWindow.xaml"。 比去App.xaml.cs並重寫OnStartup方法。在那裏你可以實例化並運行你的勝利表單窗口。

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

現在我有一個問題:當我關閉窗口時,我的'OnExit'方法沒有被調用。我怎樣才能解決這個問題? – JustLogin

+0

@JustLogin在任何調用Application.Current.Shutdown()的xaml.cs中創建一個公共方法。從Form1.FormClosed調用它。 –

0

有一個從MSDN一個很好的文章,提供你一個例子如何在Windows的窗體元素在XAML集成:https://msdn.microsoft.com/de-de/library/ms742875(v=vs.110).aspx

它應該是你想幫助的。

+0

這不適合我。是的,我知道'WindowsFormsHost'類,但它有一個問題。由於我的應用程序主要是媒體播放器,因此我使用'axwindowsmediaplayer'播放視頻(由於性能不佳,'MediaElement'不是解決方案)。它工作正常,但在WPF中託管時開始滯後。 – JustLogin

相關問題