半岛外围网上直营

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

翻译|使用教程|编辑:龚雪|2025-10-11 10:48:17.293|阅读 41 次

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

# 界面/图表报表/文档/IDE等千款热门软控件火热销售中 >>

相关链接:

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

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

DevExpress WPF中文教程图集

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

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

DevExpress技术交流群11:749942875      欢迎一起进群讨论

Step 1:获取数据

本节将创建一个虚拟源,并从中获取数据行。

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

创建一个ViewModel(视图模型)

创建一个ViewModel,用命令从数据源获取行,如下所示:

1. 创建一个FetchIssues命令。

2. 使用IssuesService.GetIssuesAsync方法从数据源获取数据。

3. 创建对象并将其分配给属性。

C#

using DevExpress.Mvvm;
using DevExpress.Mvvm.DataAnnotations;
using DevExpress.Mvvm.Xpf;
using DevExpress.Xpf.Data;

public class IssueViewModel : ViewModelBase {

[Command]
public void FetchIssues(FetchRowsAsyncArgs args) {
args.Result = GetIssuesAsync(args);
}

async Task<FetchRowsResult> GetIssuesAsync(FetchRowsAsyncArgs args) {
var take = args.Take ?? 30;
var issues = await IssuesService.GetIssuesAsync(
skip: args.Skip,
take: take,
sortOrder: GetIssueSortOrder(args.SortOrder),
filter: null);

return new FetchRowsResult(issues, hasMoreRows: issues.Length == take);
}

static IssueSortOrder GetIssueSortOrder(SortDefinition[] sortOrder) {
return IssueSortOrder.Default;
}
}

提示:有关GetIssueSortOrder方法实现的其他信息,我们将在下篇文章中详细介绍。

创建一个GridControl

添加一个GridControl,其列对应于View中的IssuesService.IssueData字段:

xml

<dxg:GridControl>
<dxg:GridControl.Columns>
<dxg:GridColumn FieldName="Subject" IsSmart="True"/>
<dxg:GridColumn FieldName="User" IsSmart="True"/>
<dxg:GridColumn FieldName="Created" IsSmart="True"/>
<dxg:GridColumn FieldName="Votes" IsSmart="True"/>
<dxg:GridColumn FieldName="Priority" IsSmart="True"/>
</dxg:GridControl.Columns>
</dxg:GridControl>

将Data Grid绑定到虚拟源

初始化一个虚拟源并从数据源中获取行:

  1. 将虚拟源实例(本教程中的)分配给属性。
  2. 将属性设置为从数据源检索的行类型(本教程中的IssueData)。如果您的服务返回未类型化的对象(例如,转换为动态对象的JSON对象),则指定属性。
  3. 定义允许窗口与ViewModel一起工作的窗口数据上下文。
  4. 将FetchIssues命令绑定到属性。

xml

<Window
xmlns:dxg="//schemas.devexpress.com/winfx/2008/xaml/grid"
xmlns:dx="//schemas.devexpress.com/winfx/2008/xaml/core">
<Window.DataContext>
<local:IssueViewModel/>
</Window.DataContext>

<dxg:GridControl>
<dxg:GridControl.ItemsSource>
<dx:InfiniteAsyncSource ElementType="{x:Type local:IssueData}"
FetchRowsCommand="{Binding FetchIssuesCommand}"/>
</dxg:GridControl.ItemsSource>
<!-- ... -->
</dxg:GridControl>
</Window>

具体说明

  • 如果在数据源级别更改了数据,请调用方法来重新加载数据。
  • 属性返回需要重新加载的行数,使用属性来允许在刷新后保留选中的行和滚动位置,自动保留选中的行和滚动位置。
  • 如果源中的数据经常更改,则可以在刷新后保留相同的选定行,指定来使虚拟源通过特定字段查找所选行。
  • 当GridControl显示最后加载的行时,虚拟源获取行的下一部分,将设置为Manual来改变此操作。
  • 您可以调用方法来强制 / 并加载下一部分数据。

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


关于慧都科技

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

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


标签:

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

文章转载自:慧都网

为你推荐

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


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP
利记足球官网(官方)网站/网页版登录入口/手机版登录入口-最新版(已更新) 真人boyu·博鱼滚球网(官方)网站/网页版登录入口/手机版登录入口-最新版(已更新) 最大网上PM娱乐城盘口(官方)网站/网页版登录入口/手机版登录入口-最新版(已更新) 正规雷火竞技官方买球(官方)网站/网页版登录入口/手机版登录入口-最新版(已更新) 雷火竞技权威十大网(官方)网站/网页版登录入口/手机版登录入口-最新版(已更新) boyu·博鱼信誉足球官网(官方)网站/网页版登录入口/手机版登录入口-最新版(已更新) 权威188BET足球网(官方)网站/网页版登录入口/手机版登录入口-最新版(已更新) 正规188BET足球大全(官方)网站/网页版登录入口/手机版登录入口-最新版(已更新)