Программа прокрутки WPF Datagrid в tabcontrol - PullRequest
0 голосов
/ 21 февраля 2019

То, что я пытаюсь сделать, это загрузить как можно больше строк в элементе управления wpf datagrid, пока он не переполнится (виден вертикальный scrollviewer).Вот мой код:

    ScrollViewer GetScrollViewer(UIElement element)
    {
        if (element == null) return null;

        ScrollViewer retour = null;
        for (int i = 0; i < VisualTreeHelper.GetChildrenCount(element) && retour == null; i++)
        {
            if (VisualTreeHelper.GetChild(element, i) is ScrollViewer)
            {
                retour = (ScrollViewer)(VisualTreeHelper.GetChild(element, i));
            }
            else
            {
                retour = GetScrollViewer(VisualTreeHelper.GetChild(element, i) as UIElement);
            }
        }
        return retour;
    }

    private void M_vm_LoadUserCompleted(int resultCount)
    {
        ScrollViewer sv = GetScrollViewer(lst);

        if (sv == null)
        {
            return;
        }

        if (sv.ComputedVerticalScrollBarVisibility != Visibility.Visible &&
            resultCount > 0)
        {
            // Load more.
            m_vm.LoadMoreCommand.Execute(null);
        }
    }

M_vm_LoadUserCompleted будет вызван после успешного запроса к серверу REST API.В настоящее время он выбирает 15 строк по одному запросу (ограничено внутренним сервером).Это решение действительно работает, пока я не помещу его в элемент управления с вкладками.Так что проблема в том, что свойство sv.ComputedVerticalScrollBarVisibility никогда не превращается в Visible, когда я переключаюсь на другую вкладку.Поэтому вместо загрузки данных до тех пор, пока сетка данных не «переполнится», она продолжает работать, поэтому загружает все данные (тысячи строк) в мое приложение, что приводит к очень плохому пользовательскому интерфейсу.Является ли это ожидаемым поведением scrollviewer, когда текущая вкладка, содержащая scrollviewer, не выбрана?Как преодолеть эту проблему.Любая помощь высоко ценится.Спасибо.

...