Wpf 如何知道一个项目是否对用户可见?

Wpf 如何知道一个项目是否对用户可见?,wpf,xaml,windows-phone-7,windows-phone-8,windows-phone,Wpf,Xaml,Windows Phone 7,Windows Phone 8,Windows Phone,请看这个: <Grid> <ScrollViewer> <Grid Background="Red" Width="50" Height="50" VerticalAlignment="Top" Margin="0,-50,0,0"/> </ScrollViewer> </Grid> 此处红色网格因其边距而不可见。但当用户下拉时,它将显示在屏幕上 我如何知道它何时可见?谢谢 (如果有必要的话,这是一

请看这个:

<Grid>
    <ScrollViewer>
        <Grid Background="Red" Width="50" Height="50" VerticalAlignment="Top" Margin="0,-50,0,0"/>
    </ScrollViewer>
</Grid>

此处红色网格因其边距而不可见。但当用户下拉时,它将显示在屏幕上

我如何知道它何时可见?谢谢


(如果有必要的话,这是一个WP8应用程序)

这种方法可能会对你很方便

private bool IsUserVisible(FrameworkElement element, FrameworkElement container)
{
    if (!element.IsVisible)
        return false;

    Rect bounds = element.TransformToAncestor(container).TransformBounds(new Rect(0.0, 0.0, element.ActualWidth, element.ActualHeight));
    Rect rect = new Rect(0.0, 0.0, container.ActualWidth, container.ActualHeight);
    return rect.Contains(bounds.TopLeft) || rect.Contains(bounds.BottomRight);
}

如果ScrollViewer VerticalOffset>=50,则表示其可视性感谢@sa_ddam213。是否有办法知道它正在滚动?您应该订阅该事件。@MarcinJuraszek令人惊讶的是,windows Phone不支持它。您是否正在尝试实现拉入刷新?你见过或可能有帮助。Telerik有一个