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