2012-07-01 35 views
0

我有一些DataGrid問題。當DataGrid設置爲CanUserAddRows時,會在DataGrid的底部放置一個新的黑色行,但這些行有意外的行爲,因爲如果我只是將新行粘住並將焦點傳遞到另一個單元格,即使該行爲空時也會創建該行。我想改變行爲通過veryfing如果行是空的避免創建新的項目,但如果在事件RowEditEnding我設置e.Cancel=true,然後NewItemPlaceHolder desapears,我不能添加任何行從那時起。任何機構都找到了這些問題的答案?錯誤NewItemPlaceholder行爲

protected override void OnRowEditEnding(DataGridRowEditEndingEventArgs e) 
{ 
    if ((e.Row.Item as DataRowView).Row.ItemArray[0] == null || (e.Row.Item as DataRowView).Row.ItemArray[0].ToString() == String.Empty) 
    { 
     e.Cancel = true; 

     IEditableCollectionView collection = Items as IEditableCollectionView; 

     if (collection.IsAddingNew) 
     { 
      collection.CancelNew(); 
     } 
    }    
    base.OnRowEditEnding(e); 
} 
+0

護理後的代碼做呢? –

+0

我取消了新的,因爲如果我不這樣做,則會引發「DeferRefresh不允許用於AddItem或NewItem事務」的異常 – Nandhi

+0

我建議使用此解決方案! http://stackoverflow.com/a/42763784/973344 –

回答

3

我只是發現了一種通過刷新CanUserAddRows財產

bool canUserAddRows = Datagrid.CanUserAddRows; 

       //Makes the refresh for CanUserAddRows because when cancel the new adding then collapse the NewPlaceHolder item 
       Datagrid.CanUserAddRows = !canUserAddRows; 
       Datagrid.CanUserAddRows = canUserAddRows;