Найти элементы управления WPF в окне просмотра - PullRequest
2 голосов
/ 17 ноября 2010

Обновлен:

Это может быть простой или сложный вопрос, но в wpf у меня есть список, который я заполняю таблицей данных из списка.

Есть ли способ узнать, находится ли конкретный элемент таблицы данных в области просмотра, т. Е. Я прокрутил его положение и он доступен для просмотра?

В настоящее время я подключился к событию listbox_ScrollChanged, и это дает мне ScrollChangedEventArgs, но я не нашел подходящего свойства ...

Любая помощь будет высоко ценится, спасибо!

1 Ответ

5 голосов
/ 17 ноября 2010

См. этот вопрос

Для ListBox в частности вы можете сделать это

private bool IsControlVisibleToUser(Control control)
{
    ListBoxItem listBoxItem =
        listBox.ItemContainerGenerator.ContainerFromItem(control) as ListBoxItem;
    if (listBoxItem != null)
    {
        return IsUserVisible(listBoxItem, listBox);
    }
    return false;
}

И метод из вопроса, который я связал

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);
} 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...