Я - приложение в стиле мастера, которое использует страницы, и пользователь может перемещаться между ними либо с помощью кнопок «Далее» и «Предыдущий», либо с помощью навигационной панели для прямого доступа к определенным страницам.
На одной странице (я назову это «страница сетки») у меня есть DataGrid, привязанный к DataTable. В DataTable есть некоторые исходные данные, но с помощью DataGrid пользователь может добавлять, редактировать и удалять строки по своему усмотрению.
На следующей странице (я назову это «страницей со списком») есть ComboBox, который привязан к той же DataTable, что и DataGrid на странице сетки.
Обе страницы используют один и тот же объект в качестве контекста данных.
Если я сразу перехожу на страницу поля со списком, все работает нормально, поле со списком имеет запись для каждой строки в DataTable, как и должно быть. Теперь я перехожу на страницу сетки и ничего там не трогаю, а затем снова захожу на страницу со списком. Теперь ComboBox отображает новый элемент, NewItemPlaceholder. Очевидно, это происходит потому, что в DataGrid для UserCanAddRows установлено значение true, и, таким образом, отображается строка-заполнитель для нового элемента. Но это должно касаться только DataGrid, а не связанной DataTable, так что, на мой взгляд, это ошибка или, по крайней мере, абсолютно ужасный дизайн.
Конечно, я не хочу, чтобы NewItemPlaceholder в моем ComboBox (и выбор его вызывает много проблем). Итак, как я могу предотвратить его отображение в ComboBox?
Обновление: тем временем я обнаружил, что элемент-заполнитель не находится в DataTable как строка, что делает его еще более странным, если в DataTable нет флага, который говорит: «В этой таблице есть NewItemPlaceholder», но не сам ряд Кроме того, когда я регистрируюсь в событии Initialized ComboBox, у меня есть 2 элемента, которые я ищу, когда я регистрируюсь в событии Loaded, у меня также есть NewItemPlaceholder, поэтому он должен быть добавлен где-то между этими двумя событиями.