每次单击“保存”按钮时,Datagrid都会插入/添加新行

时间:2015-05-04 13:18:50

标签: c# wpf datagrid

我有一个按钮(保存),每次我点击它,我的数据网格添加新行,所以我必须再次点击,这次是从我的数据网格保存记录。 是因为在我的代码背后我有这个:

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

方法NewRow()只是在我的数据网格上插入另一行:

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}"/>
我错过了什么吗?

1 个答案:

答案 0 :(得分:0)

您可以通过将网格绑定到ViewModel中的ObservableCollection,然后将项添加到ObservableCollection(您必须为此添加行按钮)来轻松实现此功能!而不是试图在NewRow方法后面的代码中添加行。

这样做: 1.将您的视图绑定到ViewModel(将View的datacontext设置为ViewModel) 2.将ObservableCollection视为ViewModel(这将是您的List,即实际数据) 3.在“添加行”按钮命令处理程序中,将空项添加到数据网格。 4.现在用户可以在新行中输入一些记录。 5.在保存按钮中,只需将ObservableCollection数据保存到您想要保存的位置。

P.S。你可以在不加“添加新行”按钮的情况下实现这一点,但这有点棘手。