我有一个按钮(保存),每次我点击它,我的数据网格添加新行,所以我必须再次点击,这次是从我的数据网格保存记录。 是因为在我的代码背后我有这个:
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}"/>
我错过了什么吗?
答案 0 :(得分:0)
您可以通过将网格绑定到ViewModel中的ObservableCollection,然后将项添加到ObservableCollection(您必须为此添加行按钮)来轻松实现此功能!而不是试图在NewRow方法后面的代码中添加行。
这样做: 1.将您的视图绑定到ViewModel(将View的datacontext设置为ViewModel) 2.将ObservableCollection视为ViewModel(这将是您的List,即实际数据) 3.在“添加行”按钮命令处理程序中,将空项添加到数据网格。 4.现在用户可以在新行中输入一些记录。 5.在保存按钮中,只需将ObservableCollection数据保存到您想要保存的位置。
P.S。你可以在不加“添加新行”按钮的情况下实现这一点,但这有点棘手。