Как найти и удалить Binding из динамически добавленного и удаленного UserControl - PullRequest
0 голосов
/ 15 сентября 2010

У меня есть набор UserControl, которые совместно используют один и тот же бизнес-объект (ViewModel), но по-разному отображают данные из него.

Я выбираю активный UserControl через выпадающий список.Старый UserControl Я удаляю из StackPanel и добавляю новый UserControl.

    var uiElement = thisObject.EditorsContainer.Children.FirstOrDefault();
    if (uiElement != null)
    {
        thisObject.EditorsContainer.Children.Remove(uiElement);
        uiElement.Cast<UserControl>().ClearValue(DataContextProperty);
    }

EditorsContainer - это StackPanel

Похоже, что родительский элемент управления сохраняет ссылку на удаленный элемент управления, поскольку при редактировании значения в активномcontrol, привязка к привязанным обновлениям свойств удаляла контроль в памяти.

1 Ответ

0 голосов
/ 22 сентября 2010

В качестве обходного пути я реализовал интерфейс IActiveAware со свойством IsActive, которое ложно, когда логическая жизнь пользовательского элемента управления закончилась.В привязанном свойстве во ViewModel я проверяю это свойство.

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