我面臨着同樣的問題,而且它沒有發生,只有當源集合計數爲0,但在編輯狀態的任何最後一排 - 從編輯狀態,新的記錄行一次刪除了的底部網格消失。 我還沒有發現任何比這更好的 - 很粗魯,而不是非常快速的解決方案,但至少它爲我的作品和currenly那總比沒有好。
鑑於DataGrid的命名grItems,已經使用的私有視圖模型參考_vm項屬性數據網格綁定,示例代碼看起來是這樣的:
<DataGrid Name="grItems"
ItemsSource="{Binding Path=Items}"
UnloadingRow="DataGridUnloadingRow">
和後面的代碼:
private void DataGridUnloadingRow(object sender, DataGridRowEventArgs e)
{
grItems.UnloadingRow -= DataGridUnloadingRow;
grItems.ItemsSource = null;
grItems.ItemsSource = _vm.Items;
grItems.UnloadingRow += DataGridUnloadingRow;
}
UPDATE
後來我注意到,當我們需要滾動網格時,這不起作用 - 我是ge tting一些內部的WPF錯誤「偏移和長度超出界限......」。早些時候,每行都有一個刪除按鈕,它綁定到與Items列表相同的級別上定義的命令。所以我不得不擺脫命令,並在視圖中使用代碼隱藏一些骯髒的技巧 - 在從視圖模型集合中刪除項目之前,我將焦點移動到網格外的某個位置,並在刪除之後將焦點放回原位。據我的理解,這個技巧執行新增行的某種「提交」,並且刪除操作在未處於編輯狀態的行上執行。