【发布时间】:2010-12-19 19:47:58
【问题描述】:
我在 WPF 数据网格(WPF 工具包)中编辑单元格模板时遇到问题。该模板是用一个 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。然后我在 datagrid 的 selectionchanged 事件上插入了 dataValuesProvider (dataValuesProvider=null) 的重置。
(dataValuesProvider 将在选定行的特定单元格输入后加载)。
这是问题所在:当我重置 dataValuesProvider(在新行的 selectionchanged 上)时,它修改了 ComboBox 的 SelectedValue 并且上一行的 Property1 被清除。
我认为存在这种行为是因为单元格的编辑模板在我编辑单元格之前不会更新绑定关联。对吗?
我该如何避免这个问题?
【问题讨论】:
标签: wpf datagrid combobox templates objectdataprovider