2010-09-02 55 views
3

邊界集合delete一箇中的所有項目後,datagrid.items.count爲1,該項目集合中的唯一產品newitemplaceholder但數據網格不顯示newitemplaceholder。這隻有在最後一項是newitemplaceholder時纔會發生,並且您嘗試對其進行編輯,而不是點擊輸入,然後單擊觸發刪除事件的按鈕。Sourcecollection計數爲0 newitemplaceholder不顯示

因爲selectedItem屬性是因爲編輯的事件不再newitemplaceholder,該項目被認爲是在sourcecollection一個新的項目。

刪除被調用之前,有2個在DataGrid的item.count。

如何讓newitemplaceholder在這個奇怪的情況出現任何幫助嗎?

回答

0

我面臨着同樣的問題,而且它沒有發生,只有當源集合計數爲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列表相同的級別上定義的命令。所以我不得不擺脫命令,並在視圖中使用代碼隱藏一些骯髒的技巧 - 在從視圖模型集合中刪除項目之前,我將焦點移動到網格外的某個位置,並在刪除之後將焦點放回原位。據我的理解,這個技巧執行新增行的某種「提交」,並且刪除操作在未處於編輯狀態的行上執行。