В wpf я устанавливаю элемент управления с вкладками, который привязывает к коллекции объектов, каждый объект имеет шаблон данных с сеткой данных, представляющей данные.Если я выберу определенную ячейку и переведу ее в режим редактирования, оставив сетку, перейдя на другую вкладку, это вызовет исключение, приведенное ниже, при возврате сетки данных:
«DeferRefresh» не допускается во время добавления AddNewили транзакция EditItem.
Похоже, что ячейка никогда не выходила из режима редактирования.Есть ли простой способ вывести ячейку из режима редактирования, или здесь происходит что-то еще?
Обновление: Похоже, я не привязываю элемент управления вкладкой к даннымисточник, но вместо этого явно определите каждую вкладку, а затем привяжите каждый элемент в источнике данных к элементу управления контентом, эта проблема исчезнет.Это не очень хорошее решение, поэтому я все же хотел бы знать, как привязать коллекцию непосредственно к элементу управления вкладками.
Обновление: Итак, что я на самом деле сделал для своего собственного решенияэто использовать ListView и элемент управления контентом вместо элемента управления вкладкой.Я использую стиль, чтобы сделать вид списка похожим на вкладку.Модель представления предоставляет набор моделей дочерних представлений и позволяет пользователю выбрать одну из них через представление списка.Затем элемент управления контентом представляет выбранную модель представления, и каждая модель представления имеет связанный шаблон данных, который содержит сетку данных.При такой настройке переключение между моделями представлений в режиме редактирования на сетке приведет к правильному завершению режима редактирования и сохранению данных.
Вот xaml для настройки этого:
<ListView ItemTemplate="{StaticResource MakeItemsLookLikeTabs}"
ItemsSource="{Binding ViewModels}"
SelectedItem="{Binding Selected}"
Style="{StaticResource MakeItLookLikeATabControl}"/>
<ContentControl Content="{Binding Selected}">
I 'Я приму ответ Фила, так как это также должно сработать, но для меня приведенное выше решение выглядит более переносимым между проектами.