如何确定控件何时对用户可见?

Posted

技术标签:

【中文标题】如何确定控件何时对用户可见?【英文标题】:How to figure out when control is visible to user? 【发布时间】:2013-02-10 12:36:14 【问题描述】:

我想知道如何确定控件何时对用户可见,何时不可见?

假设我正在编写一个扩展 TextBox 的自定义控件,我想知道何时可见,以便在可见更改触发的处理程序内执行一些自定义逻辑。

怎么做?如何确定控件是否对用户可见?例如,扩展TextBox 的自定义控件可以在Button 内部,Button 可以接收Visibility.Collapsed,因此它的所有内部嵌套控件都是不可见的,这就是我想知道的。无论 Visibility 属性设置什么值,如何判断是否可见?

【问题讨论】:

【参考方案1】:

您应该使用UIElement.IsVisibleChanged 事件。它发生在IsVisible 的值更改为只读依赖属性并指示元素在 UI 上的可见性时。 UIElement.LayoutUpdated - 可用于重新计算控件可见性的事件。

更新。 似乎完全一样:In WPF, how can I determine whether a control is visible to the user?

【讨论】:

我编辑了我的问题。我不是在谈论可见性属性。我说的是一般的能见度。顺便说一句,您指向 IsVisibleChanged 的​​链接不起作用 @hedgehog 好的。现在我明白你的意思了。已更新。 这只是我必须明确调用以确定是否可见的方法。如果可见与否,我希望得到 WPF 的通知。 @hedgehog 您可以在父级Window 上的LayoutUpdated 中使用此方法。 在父窗口的Layoutupdated中使用这个方法到底是什么意思?

以上是关于如何确定控件何时对用户可见?的主要内容,如果未能解决你的问题,请参考以下文章

如何确定 Fragment 何时在 ViewPager 中可见

如何确定控件的可见性?

如何检测控件的可见性?

如何使自定义 GUI 控件对屏幕阅读器可见?

一个用户控件对另一个用户控件的可见性

如何识别控件的可见性是不是被用户更改?