wpf - 使用 Mvvm 如何在 Datagrid wpf 中获取数据?
问题描述
当我按下按钮时,我想执行数据网格并在数据网格的行中输入数据并将数据保存在数据库中。如何获取 MVVM 格式的新数据网格行?
解决方案
我建议创建一个专门将数据添加到数据库中的表单,然后刷新数据网格的项目源。
<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);
在刷新数据的上下文中,如果您的程序有多个用户,我不推荐这种创建对象然后将其插入集合而不是清除集合然后从数据库中重新检索数据的方法。
推荐阅读
- javascript - Dom 元素无限递增
- javascript - 满足第一个条件时执行 else 块
- docker - 如何使用 env 文件将环境变量传递到独立的 vscode 远程容器中?
- mysql - 为什么 INSERT ... ON DUPLICATE KEY UPDATE 影响行报告 2?
- javascript - 后缺少名称。操作员
- python - 迭代字典的最佳方式(性能方面)
- vba - MS Access 获取更新的行 ID 或拦截更新
- javascript - 在 JavaScript 中修改时,某些单选按钮不会保持选中状态
- hana - 在 Azure SQL 数据仓库中虚拟化 SAP HANA 表
- javascript - css 或 js 文件的文件大小限制