Проверьте, является ли текущая запись первой или последней записью в CollectionViewSource - PullRequest
0 голосов
/ 03 апреля 2019

Я читаю строки из таблицы MS SQL Server в C # CollectionViewSource через Entity Framework. Одна строка = одна запись коллекции.

Я использую привязку данных для подключения элементов данных каждой записи CollectionViewSource к элементам управления графического интерфейса WPF. Пользователь использует кнопки в графическом интерфейсе для прокрутки записей коллекции вперед и назад с использованием обработчиков команд, подобных приведенному ниже.

    private void DisplayNextRecordButtonCommandHandler(object sender, ExecutedRoutedEventArgs e)               //  Select the Next record for Display.
    {
        MyCollectionViewSource.View.MoveCurrentToNext();
        //Prevent the display of an "empty" record
        if (MyCollectionViewSource.View.IsCurrentAfterLast)
        {
            orgUnitAssetRskViewSource.View.MoveCurrentToPrevious();
        }
        selectedRecordPosition = orgUnitAssetRskViewSource.View.CurrentPosition;
    }

Все работало хорошо, пока я не начал включать события «SelectionChanged» и «TextChanged» в элементы управления ComboBox и Text в графическом интерфейсе. Эти события запускаются, когда я перехожу к следующей или предыдущей записи в коллекции. Все работает, пока я не доберусь до первой или последней записи в коллекции.

Тест «IsCurrentAfterLast» не мешает мне пролистывать последнюю запись в коллекции, и когда я это делаю, я получаю исключение «Ссылка на объект не установлена ​​на экземпляр объекта». Я предполагаю, что исключение вызвано, когда события «SelectionChanged» и «TextChanged» встречают ложные данные до первой или после последней записи коллекции.

В отсутствие чего-то такого, как «IsCurrentFirst» и «IsCurrentLast», может кто-нибудь предложить эффективный способ подсчета записей в коллекции, чтобы я мог избежать перехода к первым и последним?

...