質問
既存のWinFormsアプリケーションがあり、そのためにWPFで新しいビットを設計しています。物事はかなり順調に進んでおり、ダイアログが最初に必要になりました。
WPFでダイアログを実行したい。実際のコンテンツに対してUserControlを実行し、ElementHostを使用してWinFormsフォームを介してそのコンテンツをホストする必要があるように見えます(UserControlにはShowDialog()メソッドがないため)。
それが私の質問です。それはどのように機能しますか?私の知る限り、WPF UserControlにはDialogResultプロパティさえありません(ShowDialog()メソッドがないことを考えると理にかなっています)-WPFウィンドウコントロールが必要なように見えますが、そうではありませんこの場合それを使用できると思います。
ここでは、基本的なフローと設定に苦労しています。誰かが光を放つことはできますか?
これは可能ですか?
解決
WinFormsアプリケーションからWPFウィンドウを開くことができます。
ウィンドウを作成して、 ShowDialog()
を呼び出します。 CLRはWPFフレームワークをロードし、ウィンドウを開きます。
他のヒント
Winopsアプリのように相互運用アプリケーションをほぼ動作させたい場合、あなたが説明するアプローチはうまく機能します-私の相互運用ケースでもほとんど同じことが言えます。
WPFは(WinFormsとは少し異なるバージョンですが)MessageBoxesをサポートし、WPF Windowsを使用して何かをまとめることができます(DialogResultに似たものを追加して拡張できます)。ただし、提供されるWPFコントロールは、ダイアログ、特にモーダルダイアログを最小限に抑えるために、UXの対話を変更しようとしていることを示唆しています。
しかし、あなたの人生を楽にするために、WPFコンテンツのホスティングを処理するためのWinForms Form / ElementHostサブクラスを作成します。宣言、独自のDialogResultのような列挙をラップして、WPFコードビハインドをより面倒にするSystem.Windows.Forms名前空間を含める必要がないようにします。