2010-12-03 16 views
3

WPFユーザーコントロールをホストしているウィンドウフォームを閉じたいとします。これは、ウィンドウアプリケーションで現在のフォームを閉じるときに使用されるようなものです。しかし、WPFアプリケーションのために、私は、ユーザーへの参照を取得することはできないのですが、親を制御WPFユーザーコントロール内からWPFユーザーコントロールをホストしているウィンドウフォームを閉じる方法

答えて

9

に追加する私は私のフォーム

this.Closeを()閉じることができるように、このコントロールをホストしているフォームを取得する方法

:あなたのWpfControlあなたのWinFormで財産

public Form FormsWindow { get; set; } 

ElementHostのイベントChildChangedのイベントハンドラを追加します

その後、ウィンドウを操作するためにWpfControlのFormsWindowプロパティを使用することができます。例:代替ソリューションは、可能性が

this.FormsWindow.Close(); 
+0

ありがとうございます。これは正しいですが、** InitializeComponent(); **の後に子を設定する必要があるようです。** – MSH

1

Window parent = Window.GetWindow(this); 
parent.Close(); 
+3

WPFユーザーコントロールがWindowsフォーム内でホストしている場合は機能しません。 – Zyo

1

ちょうど@ The_Smallestに追加するには、それ以外の場合は非常に明確な答えです。

イベントハンドラコードをコピーして通過するだけで、フォームのChildChangedイベントをElementHost_ChildChangedに設定する必要があります。私はそのステップを逃して、なぜFormsWindowがnullだったのか理解しようと30分を費やしました。