2016-08-31 5 views
0

У меня есть WPF приложение с некоторыми окнами WPF. Но мое главное окно - WinForms, и мне нужно запустить с ним программу. Но как я могу это сделать? Это мой App.xaml файл:Запустите приложение WPF с окном WinForms

<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/MainWindow.xaml" с StartupUri="UI/Form1.cs", я получаю "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 Создайте общедоступный метод в любом xaml.cs, который вызывает Application.Current.Shutdown(). Вызовите это из Form1.FormClosed. –

0

Существует хорошая статья из MSDN, который дает вам пример того, как интегрировать Windows-Forms элемент в XAML: https://msdn.microsoft.com/de-de/library/ms742875(v=vs.110).aspx

Это должно быть полезно для вашего предположить.

+0

Это не работает для меня. Да, я знаю о классе 'WindowsFormsHost', но у него есть проблема. Поскольку мое приложение является медиа-проигрывателем на нем, я использую 'axwindowsmediaplayer' для воспроизведения видео (« MediaElement »не является решением из-за низкой производительности). Он отлично работает, но начинает отставать при размещении в WPF. – JustLogin