我已經使用了福爾摩斯的答案,但沒有正常工作。所以我改變了一點。
這裏是我的解決方案:
首先,因爲我使用MVVM,我加入這個代碼到DataGrid:
<i:Interaction.Triggers>
<i:EventTrigger EventName="InitializingNewItem">
<ei:CallMethodAction TargetObject="{Binding}" MethodName="OnDataGridInitializingNewItem"/>
</i:EventTrigger>
</i:Interaction.Triggers>
命名空間是這些:
xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"
xmlns:ei="http://schemas.microsoft.com/expression/2010/interactions"
然後,我將此代碼添加到ViewModel並設置DataGrid:
private DataGrid _dg { get; set; }
public void OnDataGridInitializingNewItem(object sender, InitializingNewItemEventArgs e)
{
if (_dg == null)
_dg = (DataGrid)sender;
}
畢竟,在需要的時候,我跑這個代碼:
_dg.CommitEdit();
最後它工作得很好:)
PS: 首先,我試過的CancelEdit方法,而不是commitEdit的。它的工作,我去了另一個看起來像彈出式打開。當我完成要做的事情並返回到視圖時,最後添加的行消失了。但它致力於數據庫。重新打開視圖後,它就在那裏。