1
所以我只是learned,我們可以把一個WPF UserControl
到一個windows Form
使用ElementHost
控制。如果那個窗體控件配置好了,WPF用戶控件也會配置嗎?如果在將要丟棄的Windows窗體中使用WPF用戶控件,該控件是否會被丟棄?
所以我只是learned,我們可以把一個WPF UserControl
到一個windows Form
使用ElementHost
控制。如果那個窗體控件配置好了,WPF用戶控件也會配置嗎?如果在將要丟棄的Windows窗體中使用WPF用戶控件,該控件是否會被丟棄?
如果你的WPF UserControl
是IDisposable
答案是肯定的,否則不會。
在爲ElementHost
類承載WPF UserControl
的Dispose
方法的源代碼,你可以看到這一點:
IDisposable child = this.Child as IDisposable;
if (child != null)
{
child.Dispose();
}
這意味着Child
將被安置,如果它是IDisposable
。
注意
WPF不依賴於IDisposable
接口資源清理。但由於UserControl
將用於支持IDisposable
模式的ElementHost
控件中的Windows窗體項目中,如果您需要執行一些資源清理,則可以依賴IDisposable
模式。但如果它是一個WPF項目,則應該使用WPF機制來清理資源。
它是一樣的。所有面向對象的編程語言都一樣WPF用戶控件一次性。 – ebattulga
@ebattulga默認情況下,WPF UserControl不是'IDisposable',不會'Dispose'。看看這篇文章:[適當清理WPF用戶控件](http://stackoverflow.com/questions/1550212/proper-cleanup-of-wpf-user-controls)。 ElementHost控件的Dispose方法檢查Child是否爲IDisposable,然後調用Dispose方法。所以如果你需要「處理」任何東西,你應該實現'IDisposable'接口。 –