我有一个ScrollViewer
,在顶部区域,有一个视频播放器,和一个ListView
媒体播放器下方。
虽然上下滚动,当媒体播放器带来的眼帘,它开始播放。 当向下滚动,直到媒体播放器消失,媒体播放器暂停。
那么,怎么办呢? 谢谢。
我有一个ScrollViewer
,在顶部区域,有一个视频播放器,和一个ListView
媒体播放器下方。
虽然上下滚动,当媒体播放器带来的眼帘,它开始播放。 当向下滚动,直到媒体播放器消失,媒体播放器暂停。
那么,怎么办呢? 谢谢。
我们可以使用ScrollViewer.ViewChanged事件来了解用户滚动和缩放的ScrollViewer中 。 但ScrollViewer.ViewChanged当布局改变不提高。
因此,我们可以使用LayoutUpdated事件来做到这一点。
我们可以从一些物业的ScrollViewer就像HorizontalOffset和VerticalOffset。
我们可以得到控制相对于先前控制的左上角的坐标。
var top = control.TransformToVisual(StackPanel).TransformPoint(new Point());
然后我们就可以判断该元素可以由用户通过矩形的交集可以看出。
var controlBounds = new Rect(top, control.DesiredSize);
var viewBounds = new Rect(new Point(ScrollViewer.HorizontalOffset, ScrollViewer.VerticalOffset), new Size(ScrollViewer.ViewportWidth, ScrollViewer.ViewportHeight));
if (RectIntersects(viewBounds, controlBounds))
{
}
我们应该写RectIntersects检查两个矩形是相交。
private static bool RectIntersects(Rect a, Rect b)
{
return !(b.Left > a.Right
|| b.Right < a.Left
|| b.Top > a.Bottom
|| b.Bottom < a.Top);
}