这不是一个直接的解决方案,但是会解决问题。
可以简单地将另一个控件集中在 gui 上,然后DataGrid
将其更改提交到当前行。效果与编辑时按 Enter 相同DataGrid
。
例子:
我有一个TabControl
. 当 TabControl 切换选项卡时,我希望保存当前更改。
TabControl的xml:
<TabControl DockPanel.Dock="Top"
x:Name="TabControl"
ItemsSource="{Binding Tabs}"
ContentTemplateSelector="{StaticResource TabContentTemplateSelector}"
SelectionChanged="TabControl_OnSelectionChanged"
IsSynchronizedWithCurrentItem="True">
....
请注意,SelectionChanged="TabControl_OnSelectionChanged"
但它可以是您想要的任何其他控件上的任何其他事件。甚至是命令,无论如何。
然后你想要的只是关注另一个 gui 元素:
private void TabControl_OnSelectionChanged(object sender, SelectionChangedEventArgs e)
{
// focus the tab control to lose focus on datagrids - they will then commit changes if possible.
TabControl.Focus(); // my TabControl is x:Name="TabControl", Focus sets the focus
}
如前所述,效果与在编辑单元格时按 Enter 完全一样。