当视图中不再显示控件时,我需要收到某种通知。 也就是说,如果我在树中有深度控制(如Border - > Grid - > StackPanel - > TextBox),当Border被隐藏时,我需要在TextBox上进行通知。我无法访问Border本身,想象一下包装控件的所有内容都会崩溃,我仍然需要在TextBox上注意深入的子控件。
答案 0 :(得分:3)
我没有设法找到任何事件或属性,如果父在不可见时控件是可见的/不可见的,那么我必须挂钩到LayoutUpdated事件并检查所有可视祖先的VisibilityProperty。
如果感兴趣,请点击这里:
private bool IsControlVisible(FrameworkElement element)
{
var ancestors = element.GetVisualAncestorsAndSelf().ToList();
foreach(var a in ancestors)
{
Visibility visibility = (Visibility)a.GetValue(FrameworkElement.VisibilityProperty);
if (visibility == Visibility.Collapsed)
return false;
}
return true;
}
答案 1 :(得分:0)
UIElements不会通知他们的孩子可见性变化。
TextBox需要响应边框可见性,你在做什么?也许我们可以帮助解决不需要父母知识的解决方案。