我有一个控件,我反复运行一些动画(例如DoubleAnimation)。我可以检测用户是否不再看到我的控件?例如,它滚动远离,用户导航到另一个页面,或者在其他控件后面被遮挡。 我不想运行这些动画,除非我的控件的至少某些部分对用户可见。
答案 0 :(得分:0)
您可以分析可视化树或获取从控制坐标到屏幕坐标的变换,以查看其位置是否在视口内,还可以检查视觉树路径下控件的不透明度,可见性等内容,但这是如此处理密集,以至于不值得一直做一般解决方案。
唯一有意义的是处理ScrollViewer.ViewChanged
事件并检查偏移量是否可见,同时限制TransformToVisual
或VisualTreeHelper
调用仅限于ScrollViewer
更改中的实际布局。