2009-11-24 2 views
0

У меня возникла проблема с редактированием храма ячейки в WPat Datagrid (WPF Toolkit). Шаблон построен с помощью ComboBox и ItemsSource ComboBox загружаются во время выполнения.Проблема с DataTemplate и ObjectDataProvider refresh

Это средний код ...

<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) в selectionchanged событие datagrid.

(DataValuesProvider будет загружаться после ввода в определенной ячейке выбранной строки).

В этом заключается проблема: при сбросе dataValuesProvider (при выборе изменения новой строки) он модифицирует SelectedValue ComboBox и свойство Property1 предыдущей строки очищается.

Я думаю, что существует такое поведение, потому что шаблон редактирования ячейки не обновляет ассоциации привязки, пока я не отредактирую ячейку. Это верно?

Как я могу это сделать, чтобы избежать этой проблемы?

ответ

0

Я до сих пор не решен

однако я определил простой проект, который покажет проблему.

Вы можете скачать его по этой ссылке: http://pollosky.it/wp-content/uploads/2009/12/ObjectProviderTest.zip

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

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

+0

Кто-нибудь? Любая информация или мнения об этой проблеме полезна для меня ... о чем вы думаете? –

Смежные вопросы