当实际调用IAttachedObject.Detach()(KeyTrigger.Detaching())方法时?

时间:2010-08-27 14:17:29

标签: silverlight xaml blend

假设我有一个带文本框的Silverlight用户控件:

<TextBox>
  <ii:KeyTrigger Key="Enter">
      <!-- something here -->
  </ii:KeyTrigger>
</TextBox>

我将用户控件注入根内容控件:

root.Content = new MyUserControl();

现在我知道当MyUserControl的“Loaded”事件发生时,KeyTrigger将连接到TextBox:

AssociatedObject.KeyDown+=SomethingHere;

在这种情况下,AssociatedObject将成为TextBox。

该事件在KeyTrigger的OnDetaching方法重载中取消订阅,问题是我不知道何时调用OnDetaching ...任何人都可以对此有所了解?

我有一个按钮,可以将新的用户控件实例注入根内容:

root.Content = new MyUserControl();

每次发生“Loaded”事件发生在新实例上并且调用KeyTrigger的事件,没有为“旧”用户控件实例调用OnDetaching但是......这不会导致内存泄漏吗? 当控件从视觉树中消失时,是否调用OnDetaching(Detach)?

1 个答案:

答案 0 :(得分:-1)

您想要处理FrameworkElement.Closed事件 - 只有在从DependencyObject中显式删除触发器时才会调用OnDetached。