2010-08-27 66 views
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)是否在控件從視覺樹中消失時調用?

回答

-1

您想處理FrameworkElement.Closed事件 - OnDetached只在觸發器從其DependencyObject中顯式刪除時才被調用。

+0

在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

+0

是的,應該是FrameworkElement.Unloaded事件。 – 2012-01-09 10:59:44

相關問題