18

個人用ライブラリで WPF UserControl を使用しています。ライブラリは、私の WPF および WindowsForms プログラムに含まれています。ここで、UserControl に新しい (WPF) ウィンドウを表示する必要があります。新しいウィンドウで、所有者を設定したいと思います。私はこのようにします:

dialog.Owner = Application.Current.MainWindow;

WPF プログラムで UserControl を使用すると、これは正常に機能します。

WindowsForms プログラムで UserControl を使用すると ( UserControl を ElementHost に設定しますelementHost.Child = ...)、Application.Currentnull になります。

これはよくないので、私のプログラムは例外をスローします。

なぜApplication.Currentヌルなのですか?

4

1 に答える 1

40

Application.CurrentはWPF Applicationに固有です。
したがって、WinForms アプリケーションで WPF コントロールを使用している場合は、WPF アプリケーションのインスタンスを初期化する必要があります。これを WinForms アプリケーションで行います。

if ( null == System.Windows.Application.Current )
{
   new System.Windows.Application();
} 
于 2013-02-07T14:50:32.027 に答える