2016-09-16 13 views
1

私はちょうどlearned WPF UserControlFormElementHostコントロールを使用してウィンドウに置くことができます。そのウィンドウフォームコントロールが破棄された場合、WPFユーザーコントロールも処分されますか?処理されるWindowsフォーム内で使用される場合、WPFユーザーコントロールは破棄されますか?

+0

同じです。すべてのオブジェクト指向プログラミング言語は同じです。 WPFユーザーコントロール使い捨て – ebattulga

+0

@ebattulga WPF UserControlはデフォルトでは「IDisposable」ではなく、「Dispose」しません。この投稿を見てください:[WPFユーザーコントロールの適切なクリーンアップ](http://stackoverflow.com/questions/1550212/proper-cleanup-of-wpf-user-controls) 'ElementHost'コントロールの' Dispose'メソッドは 'Child'が' IDisposable'であるかどうかを確認し、 'Dispose'メソッドを呼び出します。ですから、何かをDisposeする必要があるならば、あなたは 'IDisposable'インターフェースを実装すべきです。 –

答えて

2

あなたのWPF UserControlIDisposableの場合、答えはイエスです。 WPF UserControlをホストElementHostクラスのDisposeメソッドのソースコードで

、あなたはこれを見ることができます: Childを意味

IDisposable child = this.Child as IDisposable; 
if (child != null) 
{ 
    child.Dispose(); 
} 

が配置され、それはIDisposableをだ場合。

WPFは、リソースのクリーンアップのためのIDisposableインターフェースに依存しません。しかし、UserControlは、パターンをサポートするElementHostコントロールのWindowsフォームプロジェクトで使用されるため、一部のリソースのクリーンアップを実行する必要がある場合はIDisposableパターンに依存することができます。しかし、WPFプロジェクトの場合は、リソースのクリーンアップにWPFメカニズムを使用する必要があります。

関連する問題