/ / Jak znaleźć i usunąć powiązanie z dynamicznie dodanym i usuniętym UserControl - silverlight, data binding

Jak znaleźć i usunąć powiązanie z dynamicznie dodanym i usuniętym UserControl - silverlight, data binding

Mam zestaw UserControl, które współużytkują ten sam obiekt biznesowy (ViewModel), ale tylko wyświetlaj dane z tego w inny sposób.

Wybieram aktywny UserControl przez combobox. Old UserControl I usunąć z StackPanel i dodać nowe UserControl.

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

EditorsContainer to StackPanel

Wygląda na to, że kontrolka nadrzędna odwołuje się do usuniętego elementu sterującego, ponieważ podczas edytowania wartości w aktywnej kontroli powiązanie z aktualizacjami właściwości powiązanej spowodowało usunięcie kontroli w pamięci.

Odpowiedzi:

0 dla odpowiedzi № 1

Jako obejście wdrożyłem interfejsIActiveAware z właściwością IsActive, która ma wartość false, gdy zakończył się logiczny czas trwania kontroli użytkownika. W powiązanej właściwości w ViewModel sprawdzam tę właściwość.