首页 > 解决方案 > 使用 Mvvm 如何在 Datagrid wpf 中获取数据?

问题描述

当我按下按钮时,我想执行数据网格并在数据网格的行中输入数据并将数据保存在数据库中。如何获取 MVVM 格式的新数据网格行?

标签: wpfmvvmdatagrid

解决方案


我建议创建一个专门将数据添加到数据库中的表单,然后刷新数据网格的项目源。

<DataGrid x:Name="dataGrid"  ItemsSource="{Binding ProductCollection}"  Grid.Row="1" AutoGenerateColumns="False" VirtualizingPanel.IsVirtualizing="True">
        <DataGrid.Columns>
            <DataGridTextColumn Header="DATE ADDED" Binding="{Binding DateAdded}" Width="Auto" />
            <DataGridTextColumn Header="PRODUCT ID" Binding="{Binding Id}" Width="*"/>
            <DataGridTextColumn Header="PRODUCT NAME" Binding="{Binding Name}" Width="*" />
            <DataGridTextColumn Header="CATEGORY" Binding="{Binding CategoryName}" Width="*" />
        </DataGrid.Columns>
</DataGrid>

样品表格:

<StackPanel MinWidth="250" MaxWidth="250">
    <TextBox  Margin="10" Text="{Binding NewId,UpdateSourceTrigger=PropertyChanged}"  MinHeight="38" />
    <TextBox  Margin="10" Text="{Binding NewName,UpdateSourceTrigger=PropertyChanged}"  MinHeight="38"/>
    <Button Command="{Binding InsertCommand}">Save</Button>
</StackPanel>

对于视图模型

public ObservableCollection<ProductModel> ProductCollection { get; set; } = new ObservableCollection<ProductModel>();

将数据插入数据库后,只需使用表单中的数据创建一个新产品对象,然后将其添加到集合(ProductCollection)中。它将自动刷新数据网格。

ProductModel item = new ProductModel();
item.id = NewId;
item.Name = NewName;
ProductCollection.Add(item);

在刷新数据的上下文中,如果您的程序有多个用户,我不推荐这种创建对象然后将其插入集合而不是清除集合然后从数据库中重新检索数据的方法。


推荐阅读