Я использую wpf drag and drop для привязки данных к наборам данных. Я генерирую новую строку данных с использованием метода AddNew объекта BindingListCollectionView. Я устанавливаю значения в новой строке и вызываю CommitNew для BindingListCollectionView. Я ожидаю увидеть мои назначенные значения в связанных элементах управления, но все они будут пустыми. Если я сохраню изменения в базе данных, тогда элементы управления будут обновлены, но я хочу, чтобы пользователь увидел мои назначенные значения перед вызовом UpdateAll в TableAdapterManager.
Справочная информация:
Я создал строго типизированный набор данных в проекте, отдельном от моего wpf-приложения. Мое приложение wpf ссылается на приложение набора данных. Я добавил объектный источник данных в приложение wpf, указывающий на типизированный набор данных. Я перетащил поля / элементы управления из окна источников данных в окно дизайнера wpf. Сгенерированный xaml включает раздел Window.Resources с CollectionViewSource, точно привязанным к моему набору данных и доступным для данных. Этот CollectionViewSource является DataContext для элементов управления, которые я перетащил в область дизайна. Все элементы управления используют привязку данных TwoWay.
Когда загружается окно, я хватаю ссылку на CollectionViewSource xaml (используя FindResource). Затем я беру ссылку на свойство view в CollectionViewSource и приводю его к BindingListCollectionView. Теперь я использую метод AddNew объекта BindingListCollectionView для генерации новой строки (которую AddNew возвращает как объект). Я приведу объект к DataRowView и получу доступ к его свойству Row. Затем я приведу строку в строго типизированную строку данных (сгенерированную дизайнером DataSet). Теперь я присваиваю значения некоторым столбцам строк с данными. Я вызываю CommitNew для BindingListCollectionView. Наконец, я вызываю MoveCurrentToFirst для CollectionViewSource.
Проблема:
Используя выражение наблюдения, я вижу, что данные находятся в SourceCollection как CollectionView, так и BindingListCollectionView. Может кто-нибудь объяснить, почему связанные элементы управления не показывают данные, если я не сохраню изменения в базе данных?
Код (сгенерированный XAML не показан):
Private WithEvents _cvsScanData As System.Windows.Data.CollectionViewSource
Private WithEvents _blcvScanData As System.Windows.Data.BindingListCollectionView
_cvsScanData = CType(Me.FindResource("Dt_tblScanDataViewSource"), System.Windows.Data.CollectionViewSource)
_blcvScanData = CType(_cvsScanData.View, BindingListCollectionView)
Dim newRow As LabDataSet.dt_tblScanDataRow = CType(CType(_blcvScanData.AddNew, System.Data.DataRowView).Row, LabDataSet.dt_tblScanDataRow)
newRow.SampleID = "testSampleID"
newRow.MachineID = "testMachineID"
_blcvScanData.CommitNew()
_cvsScanData.View.MoveCurrentToFirst()