Я динамически строю организационную диаграмму в Silverlight 2, добавляя множество контейнеров Grid на холст. Каждый контейнер сетки представляет узел в диаграмме. Я фиксирую события щелчка для узлов следующим образом:
grid.MouseLeftButtonUp += new MouseButtonEventHandler(grid_MouseLeftButtonUp);
По своему дизайну каждое событие щелчка меняет внешний вид дерева, поэтому при захвате события щелчка я перестраиваю все орг-дерево.
Это работает нормально для двух или трех щелчков, но после этого все просто зависает, когда я щелкаю узел (Grid). Каждый раз, когда я перестраиваю дерево, я очищаю базовый холст, используя:
_canvasBase.Children.Clear();
Мне интересно, нужно ли мне специально очистить всех делегатов события перед очисткой всех дочерних элементов холста? Или что-то еще может вызвать зависание?