我知道如何通过 TransformToAncestor 找到控件相对于其父级的位置方法,甚至还有一种方法可以确定 whether the control is visible to the user基于该转换。
现在我需要检测控件位置的变化。让我们暂时忽略效果和视觉转换以使事情简单。我只需要监视 Visual.VisualOffset 中的变化.这不是依赖属性,也没有关联的更改事件。
Visual.VisualOffset 似乎只在排列阶段更新。也许UIElement.LayoutUpdated事件可以为我提供正确的通知。但这是一个没有参数的全局事件。每当有任何变化时,我都必须迭代所有受监控的视觉效果。每当用户拖动某些东西时,这种迭代每秒最多必须完成 60 次。
我想知道是否有一些侵入性较小的东西不会迫使我重新检查全局的所有视觉效果。
这是一个例子。看LazyControl来源。方法 IsInView
使用 TransformToAncestor
执行检查。每当该方法所依赖的某些内容发生变化时,我都需要调用该方法。
最佳答案
如何覆盖 UIElement.OnRender ?
关于c# - 检测 WPF 控件何时相对于其父控件移动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25291514/