2009-07-17 10 views
1

または、Windowsフォームを作成してその中にxamlをホストするような何かをしなければなりませんか?できるだけ一貫したルック・アンド・フィールを得ることを試みています。私が後者しかできないなら、それをどうやって達成するのですか?本当にモーダルウィンドウが可能ですか?

答えて

4

これは、あなたが望むものでなければなりません:

var window = new MyWindow(); 
var helper = new WindowInteropHelper(window); 
helper.Owner = this.Handle; 
window.ShowDialog(); 

は、これが最小化/復元時に正しい動作を保証するための鍵です。メソッドの詳細については、this blog postを参照してください。

(これがない場合には、非常にあなたが必要なものは、おそらくあなたが「本当にモーダル」定義することができます。)

+0

これは、Window's Ownerプロパティ自体を設定するのとは異なる効果を持つでしょうか? Window.Ownerは、ハンドルではなく別のウィンドウを取ります。 – YotaXP

+0

@ YotaXP:はい、現行のウィンドウをWPFだけでなく実際のWin32の所有者*にするためです。詳細については、ブログ記事の最後を読んでください。 – Noldorin

+0

私はそれがWPFウィンドウから開かれていることを述べておきます。私はShowDialogがintellisenseに現れなかったので、それが利用できないと仮定して間違いを犯しました。不思議なことに、セカンダリ画面のダイアログで親ウィンドウを最小限に抑えることはできませんが、これを私のシステム上のWPFアプリケーションで奇妙な動作をするDisplayFusionに挑戦しています。 ありがとうございます。 –

1

custom dialog boxesを作成できますが、それはモーダルです。 WPF Windowをホストし、ボタンをモーダル閉じるボタンとして定義することができます。これは、モーダルウィンドウを行う最善の方法と思われます。

+1

1モーダルダイアログを実現するためには、Webの世界は、一般的に言及するものであるだけでボーダレスポップアップではありません今日まで。 –

関連する問題