В Silverlight, как обработчики событий, объявленные в xaml, разорваны - PullRequest
2 голосов
/ 26 августа 2010

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

<Grid x:Name="LayoutRoot">

  <Button x:Name="btnOpenGenericPage" Click="btnOpenGenericPage_Click" Content="Open"/>

</Grid>

Я понимаю, как обработчик события щелчка создается и подключается -> к методу InitializeComponent класса .g.cs вызывается метод System.Windows.Application.LoadComponent, и вся магия выполняется.

Однако, как только этот элемент управления удален из VisualTree, я, похоже, не понимаю, происходит ли прерывание события. Если да, кто позаботится об этом? Есть ли ситуации, когда мероприятие не будет проводным? Может кто-нибудь, пожалуйста, пролить свет на этот вопрос?

Большое спасибо заранее, Бруно.

Ответы [ 2 ]

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

Он не размотает сам себя. Вам придется сделать это самостоятельно: -

btnOpenGenericPage.click -= btnOpenGenericPage_Click

не только это, но и вы хотите убедиться, что btOpenGenericPage выпущен вам нужно: -

btnOpenGenericPage = null;

Конечно, если Usercontrol, на котором находится btnOpenGenericPage, само удаляется из дерева, так что оно становится понятным для сборки мусора, тогда вам обычно не нужно ничего делать.

1 голос
/ 26 августа 2010

Visual Studio отключает его, удаляя его из сгенерированного кода.Метод может остаться в файле code-behind, но он отключен и не запускается.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...