Можно ли уведомить «родителя» об изменении присоединенного свойства?
Меня беспокоит проблема с WPF.У меня есть класс «ContainerVisual» (на самом деле это visual3D, но это не имеет значения), который определяет присоединенное свойство «IsChildVisible».Затем в XAML я использую этот визуал и добавляю к нему несколько детей.Каждый дочерний элемент использует вложенное свойство и связывает его значение со свойством в модели представления.Когда свойство в модели представления изменяется с истинного на ложное, дочерний элемент должен исчезнуть, а если он снова становится истинным, дочерний должен появиться снова.
Чтобы сделать это возможным, у меня есть логика в ContainerVisual, котораяобрабатывает это.Затем я слушаю измененное событие в свойстве зависимости следующим образом:
public static readonly DependencyProperty IsChildVisibleProperty =
DependencyProperty.RegisterAttached("IsChildVisible", typeof(bool),
typeof(ContainerVisual), new UIPropertyMetadata(true, IsChildVisiblePropertyChanged));
private static void IsChildVisiblePropertyChanged(DependencyObject d,
DependencyPropertyChangedEventArgs e) {}
Пока все хорошо.Моя проблема только в том, что отправитель, DependencyObject, который идет с событием, является дочерним, а не родительским.Обычно это не большая проблема, так как вы можете использовать вспомогательный класс дерева для получения родителя, но это требует, чтобы визуал был в визуальном / логическом дереве в первую очередь.Если значение было изменено с false на true, мне нужно уведомить «родителя», чтобы поместить объект обратно в дерево.Конечно, на данный момент объект не имеет родителя, поэтому найти его будет сложно ...
Поэтому мой вопрос заключается в следующем: возможно ли получить уведомление в экземпляре класса, которыйопределяет присоединенное свойство (в моем случае экземпляр класса ContainerVisual), если объект использует присоединенное свойство (дочерний элемент), изменяет значение свойства?
Если это невозможно, есть ли способ для меняскрыть визуальный дочерний элемент, не удаляя его из визуального и / или логического дерева?
РЕДАКТИРОВАТЬ: если это помогает, я сохранил ссылку на всех потенциальных дочерних элементов.Мне нужно вызвать только открытый метод без параметров в моем экземпляре ContainerVisual ...