一旦单元格从编辑中失去焦点,我需要能够更新数据集的值.我知道当单元格失去焦点时(CellEditEnding),但问题是,它的上下文项的实际更新不会发生,直到实际发生该行的焦点.当只剩下一个项目时,这将成为一个巨大的问题,因为它可能永远不会失去焦点.
如何确保每次完成列编辑(CellEditEnding)时,该行的实际上下文将在该点更新(而不仅仅是当行失去焦点时)
提前致谢!
Rai*_*ast 11
我遇到了类似的问题,我有一个包含5列的DataGrid行.只有在整个数据网格行失去焦点后,才会在源代码中更新5列中的数据.
经过一番搜索,我发现了一种简单的方法.那就是在单元格的数据绑定中添加"UpdateSourceTrigger = LostFocus".
例如:
<DataGridTemplateColumn.CellEditingTemplate>
<DataTemplate>
<ComboBox DisplayMemberPath="Name"
ItemsSource="{Binding Path=MyDataSets}"
SelectedValue="{Binding Path=DataSelected, UpdateSourceTrigger=LostFocus}"/>
</DataTemplate>
</DataGridTemplateColumn.CellEditingTemplate>
Run Code Online (Sandbox Code Playgroud)
这将解决问题,因此当每个单元格失去焦点而不是整个行时,来自单元格的数据将立即更新源.
您可以DataGrid.CommitEdit在DataGrid.CellEditEnding处理程序中使用,确保处理重入.
这是一篇描述该技术的博客文章:
我遇到了类似的问题,但“通常”的修复都不起作用......
CommitEdit()对我有用的是使用如下的重载版本
DataGrid1.CommitEdit(DataGridEditingUnit.Row, true);
Run Code Online (Sandbox Code Playgroud)