WPF:是否有像Canvas.IsVisible(point)这样的东西?

时间:2011-03-02 14:13:47

标签: .net wpf wpf-controls

有类似Canvas.IsVisible(point)的内容吗?

Canvas内有ScrollViewer。在画布内部,我有一个自定义控件,应始终位于Canvas的可见部分。

enter image description here

有没有办法识别Canvas 可见矩形或点?

2 个答案:

答案 0 :(得分:2)

我创建了一个扩展方法,用于检查元素在容器内是否完全可见:

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

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

在您的情况下,您可以尝试使用类似这样的内容:

myUserControl.IsUserVisible(scrollViewerWithMyCanvas);

答案 1 :(得分:-3)

您可以使用画布的ZOrder属性,并始终将您的控件放在画布顶部