1
比方說,我有一個文本框,一個Silverlight用戶控制:當實際調用IAttachedObject.Detach()(KeyTrigger.Detaching())方法嗎?
<TextBox>
<ii:KeyTrigger Key="Enter">
<!-- something here -->
</ii:KeyTrigger>
</TextBox>
我注入我的用戶控制到根內容控制:
root.Content = new MyUserControl();
現在我知道KeyTrigger將掛接到文本框時發生MyUserControl的「加載」事件:
AssociatedObject.KeyDown+=SomethingHere;
其中AssociatedObject在這種情況下將成爲TextBox。
在OnDetaching方法重載KeyTrigger中取消訂閱,問題是我不知道什麼時候OnDetaching被調用......任何人都可以對此有所瞭解?
我有一個按鈕,注入的用戶控件的新實例爲根內容:
root.Content = new MyUserControl();
每次發生這種情況「裝」事件的新實例和事件KeyTrigger發生時被調用時,沒有OnDetaching被調用「舊」用戶控件實例但是...不會導致內存泄漏? OnDetaching(Detach)是否在控件從視覺樹中消失時調用?
在Silverlight或WPF中沒有FrameworkElement.Closed事件:http://msdn.microsoft.com/en-us/library/system.windows.frameworkelement_events(v=VS.95).aspx – 2011-09-07 17:27:41
是的,應該是FrameworkElement.Unloaded事件。 – 2012-01-09 10:59:44