WPF: Есть ли что-то вроде Canvas.IsVisible (точка)? - PullRequest
0 голосов
/ 02 марта 2011

Есть что-то вроде Canvas.IsVisible(point)?

У меня есть Canvas внутри ScrollViewer. Внутри холста у меня есть пользовательский элемент управления, который всегда должен быть в видимой части холста.

enter image description here

Есть ли способ идентифицировать Canvas видимый прямоугольник или точку?

Ответы [ 2 ]

2 голосов
/ 02 марта 2011

Я создал метод расширения, который проверяет, является ли элемент полностью видимым внутри контейнера:

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);
0 голосов
/ 02 марта 2011

Вы можете использовать свойство ZOrder для canvas и всегда ставить свой элемент управления поверх холста

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...