Проблема с обновлением DataTemplate и ObjectDataProvider
У меня проблема с шаблоном редактирования ячейки в сетке данных WPF (WPF Toolkit). Шаблон создается с помощью ComboBox, а ItemsSource ComboBox загружается во время выполнения.
Это средний код...
<ObjectDataProvider x:Key="dataValuesProvider" MethodName="GetValues" />
<toolkit:DataGrid
ItemsSource="{Binding Path=MyItems}">
<toolkit:DataGridTemplateColumn
Header="Property1">
<toolkit:DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding Path=Property1, ValidatesOnDataErrors=true}"/>
</DataTemplate>
</toolkit:DataGridTemplateColumn.CellTemplate>
<toolkit:DataGridTemplateColumn.CellEditingTemplate>
<DataTemplate>
<ComboBox
SelectedValue="{Binding Path=Property1, UpdateSourceTrigger=PropertyChanged, ValidatesOnDataErrors=True}"
IsEditable="True"
IsSynchronizedWithCurrentItem="False"
ItemsSource="{Binding Source={StaticResource dataValuesProvider}, Mode=OneWay}"
/>
</DataTemplate>
</toolkit:DataGridTemplateColumn.CellEditingTemplate>
</toolkit:DataGridTemplateColumn></toolkit:DataGrid>
Теперь у меня есть эта проблема.
Я должен обновить dataValuesProvider с разными значениями в каждой строке. Затем я вставляю сброс dataValuesProvider (dataValuesProvider = null) в событие выбора изменений в сетке данных.
(DataValuesProvider будет загружаться после ввода в конкретную ячейку выбранной строки).
Это проблема: когда я сбрасываю dataValuesProvider (при выделении измененной новой строки), он изменяет SelectedValue ComboBox и Property1 предыдущей строки очищается.
Я думаю, что есть такое поведение, потому что шаблон редактирования ячейки не обновляет ассоциации привязки, пока я не отредактирую ячейку. Это верно?
Как я могу сделать, чтобы избежать этой проблемы?
1 ответ
Я еще не решил
однако я определил простой проект, который показывает проблему.
Вы можете скачать его по этой ссылке: http://pollosky.it/wp-content/uploads/2009/12/ObjectProviderTest.zip
Попробуйте выбрать значение из второй ячейки первого ряда, а затем перейдите во второй ряд. Значение свойства первого ряда очищается!
Как я могу сделать?