c# - 检测 WPF 控件何时相对于其父控件移动

标签 c# .net wpf optimization

我知道如何通过 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/

相关文章:

c# - Stream.Write 多次或连接字符串和 Stream.Write 一次更好吗?

c# - 启动 Chrome 时尝试传递空格

c# - 如何在运行时重载方法或 C# 中的其他想法

c# - 正确使用迭代 block

c# - 如何在 wpf 中使用 SbyteToBoolConverter 转换器,在 UI 中将 bool 属性转换为 sbyte

c# - 从 LINQ 中的多个 where 条件语句获取结果

.net - 一个好的 gradle nunit 插件?

c# - 在 WPF 中单击按钮执行文件操作

c# - 如何在 WPF 中创建自己的图形效果?

c# - 在 WPF 中构建 CAD 程序