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

时间:2013-11-18 00:31:57

标签: 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>

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

我怎么知道什么时候可见?感谢。

(这是一个WP8应用,如果重要的话)

1 个答案:

答案 0 :(得分:0)

此方法可能对您有用。

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);
}