永利最大(官方)网站

DevExpress WPF中文教程:Data Grid - 如何使用虚拟源?(五)

原创|使用教程|编辑:龚雪|2025-11-05 10:17:39.583|阅读 4 次

概述:本文主要介绍如何在MVVM应用程序中使用虚拟源,欢迎下载最新版组件体验!

#慧都22周年庆大促·界面/图表报表/文档/IDE/IOT/测试等千款热门软控件火热促销中>>

相关链接:

DevExpress WPF拥有120+个控件和库,将帮助您交付满足甚至超出企业需求的高性能业务应用程序。通过DevExpress WPF能创建有着强大互动功能的XAML基础应用程序,这些应用程序专注于当代客户的需求和构建未来新一代支持触摸的解决方案。 无论是Office办公软件的衍伸产品,还是以数据为中心的商业智能产品,都能通过DevExpress WPF控件来实现。

本文将为大家一步一步演示如何在一个MVVM应用程序中使用虚拟源。

DevExpress WPF中文教程图集

注意:本教程使用作为示例数据源,使用作为虚拟数据源。

获取DevExpress WPF v25.1正式版下载

DevExpress技术交流群12:1028386091      欢迎一起进群讨论

Step 5:启用数据编辑操作

您可以允许用户在GridControl中编辑数据。

DevExpress WPF中文教程图集
实现细节

1. 为用户可以编辑的列启用ColumnBaseAllowEditing属性。

2. 设置属性为 / 来启用编辑整行模式。

 3. 创建一个Issues Service的UpdateRowAsync方法将更改保存到数据源的任务。

 4. 在ViewModel中创建UpdateIssue命令,要异步保存更改,请将任务分配给RowValidationArgsResultAsync属性。

5. 将命令绑定到。

xml

<dxg:GridControl>
<dxg:GridControl.Columns>
<dxg:GridColumn FieldName="Subject" IsSmart="True" AllowEditing="True"/>
<dxg:GridColumn FieldName="User" IsSmart="True" AllowEditing="True"/>
<dxg:GridColumn FieldName="Created" IsSmart="True" AllowEditing="True"/>
<dxg:GridColumn FieldName="Votes" IsSmart="True" AllowEditing="True"/>
<dxg:GridColumn FieldName="Priority" IsSmart="True" AllowEditing="True"/>
</dxg:GridControl.Columns>
<dxg:GridControl.View>
<dxg:TableView ShowUpdateRowButtons="OnCellEditorOpen"
ValidateRowCommand="{Binding UpdateIssueCommand}"/>
</dxg:GridControl.View>
</dxg:GridControl>

C#

[Command]
public void UpdateIssue(RowValidationArgs args) {
args.ResultAsync = UpdateIssueAsync((IssueData)args.Item);
}

static async Task<ValidationErrorInfo> UpdateIssueAsync(IssueData issue) {
await IssuesService.UpdateRowAsync(issue);
return null;
}
教程示例服务

 本节主要介绍Issues Service,本教程将此服务用作示例数据源,它的API类似于StackExchange Questions API。

概述

Issues Service是一个静态类:

C#

public static class IssuesService {
public async static Task<IssueData[]> GetIssuesAsync(int skip, int take, IssueSortOrder sortOrder, IssueFilter filter);
public async static Task<UserData[]> GetUsersAsync();
public async static Task<IssuesSummaries> GetSummariesAsync(IssueFilter filter);
public async static Task UpdateRowAsync(IssueData row);
}
GetIssuesAsync方法

GetIssuesAsync方法返回一个任务,允许您获取一个包含以下数据的页面:

C#

public class IssueData {
public int Id { get; private set; }
public string Subject { get; set; }
public int UserId { get; set; }
public DateTime Created { get; set; }
public int Votes { get; set; }
public Priority Priority { get; set; }
}

Issues Service允许您应用以下排序顺序:

C#

public enum IssueSortOrder {
Default,
CreatedDescending,
VotesAscending,
VotesDescending,
}

Issues Service允许您应用以下过滤器:

C#

public class IssueFilter {
public Priority? Priority { get; private set; }
public DateTime? CreatedFrom { get; private set; }
public DateTime? CreatedTo { get; private set; }
public int? MinVotes { get; private set; }
}
GetUsersAsync方法

GetUsersAsync方法返回一个任务,允许您获取一个用户集合:

C#

public class UserData {
public int Id { get; }
public string FirstName { get; }
public string LastName { get; }
public string FullName => FirstName + " " + LastName;
}
GetSummariesAsync方法

 GetSummariesAsync方法返回一个任务,允许您获得行的总数和最后创建对象的日期时间:

C#

public class IssuesSummaries {
public int Count { get; private set; }
public DateTime? LastCreated { get; private set; }
}
UpdateRowAsync方法

UpdateRowAsync方法返回一个任务,该任务允许您向数据源提交更改。

其他

 GridControl在读取操作期间显示一个加载指示器,因为Issues Service以短时间延迟返回数据:

C#

public async static Task<IssueData[]> GetIssuesAsync(int skip, int take, IssueSortOrder sortOrder, IssueFilter filter) {
await Task.Delay(300).ConfigureAwait(false);
// ...
}
public async static Task<UserData[]> GetUsersAsync() {
await Task.Delay(300).ConfigureAwait(false);
// ...
}
public async static Task<IssuesSummaries> GetSummariesAsync(IssueFilter filter) {
await Task.Delay(300).ConfigureAwait(false);
// ...
}
public async static Task UpdateRowAsync(IssueData row) {
// ...
await Task.Delay(500).ConfigureAwait(false);
}

更多产品资讯及授权,欢迎来电咨询:023-68661681


关于慧都科技

慧都是⼀家⾏业数字化解决⽅案公司,专注于软件、⽯油与⼯业领域,以深⼊的业务理解和⾏业经验,帮助企业实现智能化转型与持续竞争优势。

 慧都是DevExpress的中国区的合作伙伴,DevExpress作为用户界面领域的优秀产品,帮助企业高效构建权限管理、数据可视化(如网格/图表/仪表盘)、跨平台系统(WinForms/ASP.NET/.NET MAUI)及行业定制解决方案,加速开发并强化交互体验。

慧都22周年庆火热开启·狂欢‘价’到!

标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@hmdbvip.cn

文章转载自:慧都网

为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP
PM娱乐城网络现金网站(官方)网站/网页版登录入口/手机版登录入口-最新版(已更新) PM娱乐城最大(官方)网站/网页版登录入口/手机版登录入口-最新版(已更新) 永利外围最新(官方)网站/网页版登录入口/手机版登录入口-最新版(已更新) 网络权威朗驰娱乐大全(官方)网站/网页版登录入口/手机版登录入口-最新版(已更新) 永利真人网上足球(官方)网站/网页版登录入口/手机版登录入口-最新版(已更新) 利记最火十大网(官方)网站/网页版登录入口/手机版登录入口-最新版(已更新) boyu·博鱼权威网络足球(官方)网站/网页版登录入口/手机版登录入口-最新版(已更新) PM娱乐城网上足球(官方)网站/网页版登录入口/手机版登录入口-最新版(已更新)