2015-05-04 36 views
-1

我有一個按鈕(保存),每次我點擊它,我的數據網格添加新行,所以我不得不再次點擊,這次保存我的數據網格記錄。 是不是因爲在我後面的代碼,我有這樣的:Datagrid每次插入/添加新行我點擊我的保存按鈕

private void uxItemBatchDetails_RowEditEnding(object sender, DataGridRowEditEndingEventArgs e) 
    { 
     if (uxItemBatchDetails.Items.CurrentPosition == (uxItemBatchDetails.Items.Count - 1)) 
      (this.DataContext as ItemBatchViewModel).NewRow(); 
    } 

方法NEWROW()只需插入我的DataGrid中另一行:

public void NewRow() 
    { 
     int rowIndex = 1; 

     if (ItemBatchDetails.Count > 0) 
      rowIndex = ItemBatchDetails.Max(i => i.RowIndex + 1); 

     ItemBatchDetails.Insert(ItemBatchDetails.Count, new ItemBatchDetailViewModel(rowIndex)); 
    } 

和我的XAML:

<Button Content="SAVE" 
         Grid.Column="1" 
         Grid.Row="1" 
         Width="80" 
         Background="#FF930936" 
         Foreground="White" 
         Command="{Binding SaveCommand}"/> 

我錯過了什麼?

回答

0

通過將網格綁定到ViewModel中的ObservableCollection,然後將項目添加到ObservableCollection中(您必須爲此添加一行按鈕),才能輕鬆實現此功能!而不是試圖在NewRow方法後面的代碼中添加行。

所以這樣做:1。 綁定您的視圖的視圖模型(設置視圖的DataContext的是視圖模型) 2.取一個ObservableCollection視圖模型(這將是你的名單,即實際數據) 3。在添加行按鈕命令處理程序中,向數據網格添加一個空項目。 4.現在用戶可以在新行中輸入一些記錄。 5.在保存按鈕中,只需將ObservableCollection數據保存到您想要保存的位置即可。

P.S.你也可以在不添加添加新行按鈕的情況下實現這一點,但這樣做有點棘手。

相關問題