如果附加属性发生变化,是否可以通知“父母”?
我对WPF问题感到困扰。我有一个类,“ContainerVisual”,(实际上是一个visual3D,但应该是无关紧要的),它定义了一个附加属性“IsChildVisible”。在XAML中,我然后使用这个视觉效果并添加一些孩子。每个子节点都使用附加属性,并将其值绑定到视图模型中的属性。当视图模型中的属性从true变为false时,子项应该消失,如果它变回true,则子项应该重新出现。
为了实现这一点,我在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实例中调用一个无参数的公共方法......
答案 0 :(得分:3)