惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

酷 壳 – CoolShell
酷 壳 – CoolShell
aimingoo的专栏
aimingoo的专栏
Microsoft Security Blog
Microsoft Security Blog
NISL@THU
NISL@THU
T
Threatpost
T
The Exploit Database - CXSecurity.com
T
Threat Research - Cisco Blogs
S
Securelist
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
人人都是产品经理
人人都是产品经理
B
Blog RSS Feed
S
Secure Thoughts
MyScale Blog
MyScale Blog
O
OpenAI News
P
Palo Alto Networks Blog
美团技术团队
C
Cyber Attacks, Cyber Crime and Cyber Security
TaoSecurity Blog
TaoSecurity Blog
量子位
L
Lohrmann on Cybersecurity
G
GRAHAM CLULEY
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
T
Tailwind CSS Blog
Know Your Adversary
Know Your Adversary
Recent Commits to openclaw:main
Recent Commits to openclaw:main
Simon Willison's Weblog
Simon Willison's Weblog
宝玉的分享
宝玉的分享
PCI Perspectives
PCI Perspectives
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
C
Cybersecurity and Infrastructure Security Agency CISA
T
Tenable Blog
I
InfoQ
D
Darknet – Hacking Tools, Hacker News & Cyber Security
Microsoft Azure Blog
Microsoft Azure Blog
Recent Announcements
Recent Announcements
S
Security @ Cisco Blogs
S
Schneier on Security
B
Blog
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
The Cloudflare Blog
AWS News Blog
AWS News Blog
IT之家
IT之家
V
Vulnerabilities – Threatpost
The Hacker News
The Hacker News
H
Heimdal Security Blog
I
Intezer
A
Arctic Wolf
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
H
Help Net Security
W
WeLiveSecurity

博客园 - AABBbaby

从研发到供应链——轻量级CAD查看器SpinFire Insight在汽车行业的应用价值 DevExpress发布文档MCP Server:提升开发体验的AI文档智能服务(五) 基于嵌入向量的智能检索!HOOPS AI 解锁 CAD 零件相似性搜索新方式 从自研到外购:HOOPS如何帮助工业软件开发商加速上市、聚焦差异化 车企携手Tech Soft 3D:基于 HOOPS 工具集打造Web端一体化工程可视化解决方案 CAD格式转换引擎HOOPS Exchange v2026.2.0:计算镶嵌能力升级,释放3D数据处理新潜力 界面控件DevExpress JS & ASP.NET Core v25.2新版亮点 - AI驱动扩展功能升级 CAD格式转换引擎HOOPS Exchange 2026.2.0发布:率先支持 NX 2512,引领工业数据交换新标杆 界面组件DevExpress正式官宣发布v25.2.5|附高速下载 HOOPS Mesh、HOOPS Access 与 HOOPS Solve 发布 SAM 2.15:全面提升 CAE 数据处理与仿真互操作能力 DevExpress WPF中文教程:Data Grid - 服务器模式和即时反馈模式 界面控件DevExpress WinForms中文教程:Data Grid - 数据绑定(二) CAE后处理开发选商业还是开源工具?HOOPS Envision与VTK/ParaView深度对比 DevExpress发布文档MCP Server:提升开发体验的AI文档智能服务(四) 工业级可视化引擎HOOPS Visualize Web 2026.1.0重塑Web 3D可视化体验 界面控件DevExpress VCL v25.2新功能亮点:支持RAD Studio 13 HOOPS可视化技术如何推动SINTEF Ocean海洋结构仿真软件走向工程化应用? DevExpress WPF中文教程:Data Grid - 示例服务教程 突破性迈进 | HOOPS Exchange 2026.1正式发布DGN阅读器,全面开启 DGN 数据高保真访问时代 3D Web可视化引擎HOOPS Visualize Web v2026.1.0更新发布:持续增强Web端工程级3D可视化能力 应用程序主题研发有妙招!DevExtreme拥有多种预定义主题样式 界面组件DevExpress WPF v22.1 - 全新升级数据分析功能 移动应用开发推荐这个三方组件,时间选择即刻拥有全新体验 UI组件Kendo UI for Angular R3 2022亮点——让应用程序体验更酷炫 如何用界面组件DevExpress WPF创建Excel式的过滤功能?赶紧Get 响应式UI组件DevExtreme 10月新版——v22.1.6全新发布 界面控件DevExtreme中文使用指南——如何构建 & 应用模板 行业领先的界面控价DevExpress 10月新版——v22.1.6发布 「行业应用」界面框架Kendo UI助力企业加速完成财务数据可视化 如何用界面组件DevExpress WinForm创建一个支持High DPI的应用? 界面组件Telerik WinForm R3 2022,让应用启动变得更酷炫 界面组件DevExpress WinForms v22.1新版亮点 - 支持High-DPI UI组件Kendo UI for jQuery R3 2022亮点——拥有全新的按钮组件 界面组件DevExpress WPF TreeView中文指南 - 如何实现数据分层展示 「详解」看界面控件DevExtreme如何实现异步验证 界面控件DevExpress WinForm中文指南 - 使用HTML&CSS模板的条件样式 MyEclipse技术全面解析——Spring IDE,改变应用程序研发 界面组件DevExpress WinForms v22.1 - 类office功能全新升级 界面组件Telerik UI for WPF R3 2022——支持最新的.NET 7预览版 界面控件DevExpress WPF Data Grid组件,拥有XAML设计时项目源向导 B/S端界面控件DevExtreme React Scheduler—与Material UI无缝集成 来看界面组件DevExpress WinForm是如何实现地图搜索的 VCL界面组件DevExpress VCL v22.1 - 发布全新的Shell组件 响应式UI组件集DevExtreme v22.1.5,9月全新发布! 界面组件包DevExpress v22.1.5——9月全新发布 界面控件DevExtreme React Grid—如何将数据导出到Excel文档? 界面控件DevExpress WinForms - 有关.NET Core 6+的项目迁移说明 如何为WPF应用程序制作一个虚拟键盘?这里有答案(Part 2) Visual Studio插件DevExpress CodeRush v22.1- 支持C# 10 一篇文章教你如何用界面组件DevExpress WPF创建一个WPF视图模型 B/S架构下的界面控件DevExtreme甘特图有哪些功能?一起来看 界面控件DevExpress WinForms Property Grid - 全新的Office视图 界面组件DevExpress MAUI & Xamarin v22.1 - 全新的项目模板 界面组件DevExpress WPF Data Grid哪些功能还能增强?一起来看 如何为WPF应用程序制作一个虚拟键盘?这里有答案(Part 1) B/S端界面控件DevExtreme JavaScript—全新的UI模板库 (v22.2) Web开发者福音!创建第一个Vite支持的Web应用(2/2) 界面控件DevExpress WinForms & WPF v22.2——全新的.NET和ARM支持 跨平台UI组件DevExpress XAF v22.1 - 程序集默认面向 .NET 6
如何用界面组件DevExpress WPF Scheduler实现数据的按需加载?
AABBbaby · 2022-08-24 · via 博客园 - AABBbaby

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

DevExpress WPF v22.1正式版下载

在v20.2版本中,技术团队为WPF Scheduler控件添加了按需数据加载支持,本文将为大家介绍如何使用WPF Scheduler的API在WPF应用程序中配置数据加载逻辑。

性能影响

按需从源中获取数据是一种常用技术,可以缩短具有大型数据集的应用程序的启动时间。 为了帮助您估算收益,我们测量了 Scheduler 控件加载计划所需的时间:

这些测量没有考虑从源加载数据项所花费的时间,对于速度较慢的数据库和服务,仅加载部分数据的性能提升会更高。

按需加载入门指南

要启用按需数据加载,您必须处理 DataSource.FetchAppointments 事件(时间区域有一个单独的 DataSource.FetchTimeRegions 事件)。 当您处理这些事件时,DevExpress WPF Scheduler仅在其当前可见的时间间隔内加载数据,当用户从一个时间段导航到另一个时间段时,我们的WPF Scheduler会从数据源中查询更多信息(根据需要),缓存加载的数据以减少查询频率。

为了进一步降低查询频率,WPF Scheduler将加载数据的时间间隔扩展到 DataSource.FetchRange 属性值,默认FetchRange为1个月。旦用户滚动超出此范围,Scheduler只会重新计算此时间间隔:

实现

以下代码示例演示了如何为DbContext数据源引入按需数据加载:

// Data context
public class SchedulingDataContext : DbContext {
public SchedulingDataContext() : base(CreateConnection(), true) { }
static DbConnection CreateConnection() {
//...
}
// Data items
public DbSet<AppointmentEntity> AppointmentEntities { get; set; }

//...
}

// Event implementation
void dataSource_FetchAppointments(object sender, DevExpress.Xpf.Scheduling.FetchDataEventArgs e) {
// Pass data objects to the event's Result property
e.Result = dbContext.AppointmentEntities.Where(
// The search query.
// Use the item's QueryStart and QueryEnd properties to calculate the correct interval
// as they take recurrence patterns into account.
// The event's Interval property returns the time interval for which to load data objects.
// Its value is the SchedulerControl.VisibleIntervals extended to the DataSource.FetchRange property value in both directions.
x => x.QueryStart <= e.Interval.End && x.QueryEnd >= e.Interval.Start)
.ToArray();
}

此代码段中的 Where 方法的参数是一个基本的搜索查询,不涉及过滤,您可以改用 FetchDataEventArgs.GetFetchExpression 方法来简化实现:

void FetchAppointments(FetchDataEventArgs e) {
e.Result = dbContext.AppointmentEntities
.Where(e.GetFetchExpression<AppointmentEntity>()).ToArray();
}
同步Scheduler和源

要同步数据源和Scheduler(部分加载数据),您需要手动保存更改,内置的 CRUD 事件简化了这一要求,可以为所有四个事件编写一个处理程序:

<dxsch:SchedulerControl
AppointmentAdded="ProcessChanges"
AppointmentEdited="ProcessChanges"
AppointmentRemoved="ProcessChanges"
AppointmentRestored="ProcessChanges"/>
void ProcessChanges(object sender, AppointmentCRUDEventArgs e) {
db.Appointments.AddRange(e.AddToSource.Select(x => (Appointment)x.SourceObject));
db.Appointments.RemoveRange(e.DeleteFromSource.Select(x => (Appointment)x.SourceObject));
db.SaveChanges();
}

如果您想了解有关按需数据加载的更多信息,并且您的计算机上安装了DevExpress WPF组件,请单击下面的链接以启动我们的示例演示:

数据按需加载演示:dxdemo://Wpf/DXScheduling/MainDemo/OnDemandDataLoading


DevExpress技术交流群6:600715373      欢迎一起进群讨论

更多DevExpress线上公开课、中文教程资讯请上中文网获取