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.底部