Проблема с обновлением 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

Попробуйте выбрать значение из второй ячейки первого ряда, а затем перейдите во второй ряд. Значение свойства первого ряда очищается!

Как я могу сделать?

Другие вопросы по тегам