Я читаю строки из таблицы 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», может кто-нибудь предложить эффективный способ подсчета записей в коллекции, чтобы я мог избежать перехода к первым и последним?