gpt4 book ai didi

.net - WPF 可编辑数据网格,如 MS Access 和 MVVM

转载 作者:行者123 更新时间:2023-12-03 10:50:11 27 4
gpt4 key购买 nike

我正在开发一个为 WPF 桌面应用程序实现 MVVM 的项目。我有一种情况,我想让 Datagrid 像旧的 MS Access 表 ListView 一样可编辑。我将 Datagrid 的 ItemsSource 绑定(bind)到成员实现 INPC 的 ObservableCollection。现在我想允许用户通过单击列的任何单元格来更新成员,当他们导航到其他行或丢失焦点时,应该验证数据,然后将其保存到数据库中。

如何在我的 ViewModel 中捕获此类事件以及如何实现这个简单的功能?

最佳答案

您可以通过将网格的 SelectedItem 绑定(bind)到 View 模型上的属性来触发“保存”操作,并且在属性的 setter 中,您可以在用新选择的项目替换之前保存先前选择的项目,简而言之是伪代码看起来像这样:

public MyDataObject SelectedItem
{
get { return _selectedItem; }
set
{
if (value != _selectedItem)
{
SaveMyItem(_selectedItem);
_selectedItem = value;
OnPropertyChanged("SelectedItem");
}
}
}

private MyDataObject _selectedItem;

<DataGrid ItemsSource="{Binding MyCollection}" SelectedItem="{Binding SelectedItem, UpdateSourceTrigger=PropertyChanged}" ...etc... />

当然,您可能需要稍微调整这种方法 - 如果保存修改的项目需要大量时间,那么您将希望在后台线程上执行此操作。如果您将验证指定为网格上列绑定(bind)的一部分,则在数据正确验证之前,用户将无法选择和编辑新行。

关于.net - WPF 可编辑数据网格,如 MS Access 和 MVVM,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6732731/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com