我在 WPF 数据网格(WPF 工具包)中编辑单元格模板时遇到问题。该模板是使用 ComboBox 构建的,并且 ComboBox 的 ItemsSource 在运行时加载。
这是平均代码...
<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。然后我在 datagrid 的 selectionchanged 事件上插入了 dataValuesProvider (dataValuesProvider=null) 的重置。
(dataValuesProvider 将在选定行的特定单元格上输入后加载)。
这就是问题所在:当我重置 dataValuesProvider(在新行的 selectionchanged 上)时,它修改了 ComboBox 的 SelectedValue 并且清除了前一行的 Property1。
我认为存在这种行为是因为单元格的编辑模板在我编辑单元格之前不会更新绑定关联。这是正确的?
我该怎么做才能避免这个问题?