2010-07-26 3 views
0

Я динамически создаю диаграмму org в Silverlight 2, добавляя много контейнеров Grid к холсту. Каждый контейнер сетки представляет собой узел внутри диаграммы. Я захватывая событие щелчка для узлов следующим образом:События делегатов Silverlight

grid.MouseLeftButtonUp += new MouseButtonEventHandler(grid_MouseLeftButtonUp); 

По дизайну, каждое событие нажатия изменяет внешний вид дерева, так что при захвате события щелчка я перестраивать весь орг дерево. Это работает нормально для двух или трех кликов, но после этого все просто зависает, когда я нажимаю узел (сетка). Каждый раз, когда я перестраивать дерево очистить базовый холст с помощью:

_canvasBase.Children.Clear(); 

Я интересно, если мне нужно конкретно ясно, все делегаты события перед очисткой всех брезентовые детей? Или может быть что-то еще, чтобы вызвать зависание?

+0

Отметьте это сообщение: [LeakEvent → WeakEvent] (http://blogs.microsoft.co.il/blogs/shimmy/archive/2012/02/01/weak-event-handler-for-silverlight.aspx) – Shimmy

ответ

1

Да, вы будете плохой памятью утечки, если вы не удалите обработчики событий.

+0

Спасибо - можете ли вы посоветовать лучший способ удалить все подписанные обработчики для определенного uielement? В коде я фактически не знаю, какие обработчики связаны с каждым элементом. – DEH

Смежные вопросы