Когда метод IAttachedObject.Detach () (KeyTrigger.Detaching ()) действительно вызывается? - PullRequest
1 голос
/ 27 августа 2010

Допустим, у меня есть пользовательский элемент управления Silverlight с текстовым полем:

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

Я ввожу свой пользовательский элемент управления в корневой элемент управления содержимым:

root.Content = new MyUserControl();

Теперь я знаю, что KeyTrigger будетподключается к TextBox, когда происходит событие «Loaded» MyUserControl:

AssociatedObject.KeyDown+=SomethingHere;

Где AssociatedObject будет TextBox в этом случае.

Событие отменяется при перегрузке метода OnDetaching KeyTriggerпроблема в том, что я не знаю, когда вызывается OnDetaching ... Кто-нибудь может пролить свет на это?

У меня есть кнопка, которая внедряет новый экземпляр пользовательского элемента управления в корневой контент:

root.Content = new MyUserControl();

каждый раз, когда это происходит, событие «Loaded» возникает в новом экземпляре, и вызывается событие для KeyTrigger, однако для «старого» экземпляра пользовательского элемента управления не вызывается OnDetaching ... не вызовет ли это утечки памяти?Вызывается ли OnDetaching (Detach), когда элемент управления исчезает из визуального дерева?

1 Ответ

0 голосов
/ 27 августа 2010

Вы хотите обработать событие FrameworkElement.Closed - OnDetached вызывается только тогда, когда триггер явно удален из его DependencyObject.

...