XAML ScrollViewer';s的子视图事件

XAML ScrollViewer';s的子视图事件,xaml,uwp,uwp-xaml,Xaml,Uwp,Uwp Xaml,我有一个ScrollViewer,在顶部区域有一个视频播放器,在媒体播放器下方有一个ListView 上下滚动时,当媒体播放器进入视野时,它开始播放。向下滚动直到媒体播放器消失时,媒体播放器暂停 那么,怎么做呢?Thx.我们可以使用事件来了解用户滚动和缩放屏幕的情况。但当布局更改时,不会升高 所以我们可以使用事件来完成它 我们可以得到一些性质,就像水平偏移和垂直偏移一样 我们可以得到控件左上角相对于前一个控件的坐标 var top = control.TransformToVis

我有一个
ScrollViewer
,在顶部区域有一个视频播放器,在媒体播放器下方有一个
ListView

上下滚动时,当媒体播放器进入视野时,它开始播放。向下滚动直到媒体播放器消失时,媒体播放器暂停

那么,怎么做呢?Thx.

我们可以使用事件来了解用户滚动和缩放屏幕的情况。但当布局更改时,不会升高

所以我们可以使用事件来完成它

我们可以得到一些性质,就像水平偏移和垂直偏移一样

我们可以得到控件左上角相对于前一个控件的坐标

        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))
        {

        }

我们应该写两个矩形相交,检查两个矩形是否相交

    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);
    }
私有静态布尔矩形相交(矩形a、矩形b)
{
返回!(b.左>a.右)
||b.右a.底部
||b.底部