没有找到合适的产品?
联系客服协助选型:023-68661681
提供3000多款全球软件/控件产品
针对软件研发的各个阶段提供专业培训与技术咨询
根据客户需求提供定制化的软件开发服务
全球知名设计软件,显著提升设计质量
打造以经营为中心,实现生产过程透明化管理
帮助企业合理产能分配,提高资源利用率
快速打造数字化生产线,实现全流程追溯
生产过程精准追溯,满足企业合规要求
以六西格玛为理论基础,实现产品质量全数字化管理
通过大屏电子看板,实现车间透明化管理
对设备进行全生命周期管理,提高设备综合利用率
实现设备数据的实时采集与监控
利用数字化技术提升油气勘探的效率和成功率
钻井计划优化、实时监控和风险评估
提供业务洞察与决策支持实现数据驱动决策
翻译|产品更新|编辑:龚雪|2025-04-14 10:17:49.763|阅读 7 次
概述:DevExpress .NET MAUI控件在新的v24.2中重点增强了MVVM功能,欢迎下载最新版体验!
# 界面/图表报表/文档/IDE等千款热门软控件火热销售中 >>
相关链接:
DevExpress拥有.NET开发需要的所有平台控件,包含600多个UI控件、报表平台、DevExpress Dashboard eXpressApp 框架、适用于 Visual Studio的CodeRush等一系列辅助工具。屡获大奖的软件开发平台DevExpress 今年第一个重要版本v23.1正式发布,该版本拥有众多新产品和数十个具有高影响力的功能,可为桌面、Web和移动应用提供直观的解决方案,全面解决各种使用场景问题。
DevExpress .NET MAUI控件在新的v24.2中重点增强了MVVM功能,欢迎下载最新版体验!
DevExpress技术交流群11:749942875 欢迎一起进群讨论
DevExpress官方已经开发了一个包含服务、帮助程序和标记扩展的库,以便更容易地创建基于MVC的应用程序。目前没有创建自己的MVVM框架(就像为WPF和WinForms组件所做的那样),相反选择了Community Toolkit MVVM,DevExpress的库并没有取代它,而是用额外的功能增强了它。
现在,您可以使用以下服务来简化MVVM的开发:
这些服务会自动添加到默认的依赖注入(DI)容器中,您只需要注册视图模型并定义一个构造函数,该构造函数接受相应的接口来访问视图模型中的服务。
C#
public class ViewModel { public ViewModel(INavigationService navigationService, IPrintService printService, ISaveFilePicker saveFilePickerService) { //navigationService.GoToAsync(...); //printService.PrintAsync(...); //saveFilePickerService.SaveAsync(...); } }
如果您喜欢使用自己的自定义服务实现,可以在DI容器中注册它来覆盖默认注册:
C#
public static class MauiProgram { public static MauiApp CreateMauiApp() { //... builder.Services.AddSingleton<INavigationService, NavigationServiceEx>(); } } public class NavigationServiceEx : NavigationService { }
DevExpress的Popup Dialog Service(弹出对话框服务)可以很容易地显示预定义和自定义弹出对话框,该服务允许您根据用户点击的按钮返回结果。
以下是在弹出对话框服务中可用的预定义对话框:
要使用这些对话框,只需通过依赖注入将IDXPopupService注入到视图模型中,并调用以下方法当中的一个:
下面是一个如何用图标显示警告的示例:
C#
public class PopupServiceDemoViewModel { readonly IDXPopupService PopupService; public PopupServiceDemoViewModel(IDXPopupService popupService) { PopupService = popupService; } Task ShowAlertWithIcon() { var res = await popupService.ShowAlert( settings: new DXPopupSettings() { Title = "Reset Settings ?", Message = "This will reset your app preferences back to their default settings.", TitleIcon = icon }, ok: "Accept", cancel: "Cancel"); } }
要显示带有自定义内容的对话框,创建自己的视图,将其注册到DI容器中并调用:
C#
builder.Services .AddTransient<LoginPopup>() .AddTransient<LoginPopupViewModel>; //… async Task ShowCustomPopup() { var vm = await popupService.ShowPopup<LoginPopupViewModel>(); }
在.NET MAUI中,Shell.Current.GoToAsync方法允许您从任何类型导航到视图,但是直接从视图模型调用此方法会对Shell产生强烈的依赖性,这破坏了MVVM模式并使单元测试复杂化。为了解决这个问题,我们引入了一个导航服务,您可以将它注入到视图模型中,以一种对MVC友好的方式导航到其他视图:
C#
public class ViewModel { INavigationService NavigationService { get; } public ViewModel(INavigationService navigationService) { NavigationService = navigationService; } void ShowDetailForm() { var parameters = new Dictionary<string, object>(); parameters["NavigationParameter"] = NavigationParameter; NavigationService.GoToAsync("DetailView", parameters, false); } }
类似于标准的GoToAsync方法,NavigationService.GoToAsync允许您指定目标视图名称和导航参数。此外,您可以通过访问 属性获得当前视图。
MVVM库包括服务,来帮助您指定保存文件的名称和位置。它打开一个标准对话框,允许用户选择保存文件的位置和方式:
像其他服务一样,您可以使用DI注入它,并从视图模型中使用:
C#
public class ViewModel { ISaveFilePicker SaveFilePicker { get; } public ViewModel(ISaveFilePicker saveFilePicker) { SaveFilePicker = saveFilePicker; } async Task Save() { await SaveFilePicker.SaveAsync(fileToSave, "HelloWorld.txt", PredefinedFileType.Any); } }
v24.2包括一个用于触发打印对话框的服务,只需调用并将文档名称作为参数传递:
C#
public class PrintServiceDemoViewModel { IPrintService PrintService { get; } public PrintServiceDemoViewModel(IPrintService printService) { PrintService = printService; } async Task Print() { await PrintService.PrintAsync("BalanceSheet.pdf"); } }
上面提到的MVVM服务是为跨整个应用程序使用而设计的,如果您需要实现特定视图与其视图模型之间的通信逻辑,可以利用我们新的UI Service机制。这个新服务允许您直接从视图模型与UI元素交互,而无需将代码绑定到特定的元素类型。
例如,要强制CollectionView滚动到最后一个元素,你可以创建一个调用的自定义服务:
C#
public interface IScollService { void ScrollToEnd(); } public class ScollService : UIServiceBase, IScollService { public void ScrollToEnd() { DXCollectionView collection = (DXCollectionView)AssociatedObject; collection.ScrollTo(collection.VisibleItemCount, DXScrollToPosition.End); } }
一旦完成,您可以把这个服务附加到DXCollectionView:
XML
<dx:DXCollectionView> <dx:DXCollectionView.Behaviors> <local:ScollService/> </dx:DXCollectionView.Behaviors> </dx:DXCollectionView>
在视图模型中,您可以通过服务容器访问注册的服务,并通过服务接口触发与UI相关的操作:
C#
public partial class ViewModel : IUIServiceClient { public IUIServiceContainer ServiceContainer { get; } = new UIServiceContainer(); void ShowLastItem() { var scrollService = ServiceContainer.GetRequiredService<IScollService>(); scrollService.ScrollToEnd(); } }
更多产品资讯及授权,欢迎来电咨询:023-68661681
慧都科技是专注软件工程、智能制造、石油工程三大行业的数字化解决方案服务商。在软件工程领域,我们提供开发控件、研发管理、代码开发、部署运维等软件开发全链路所需的产品,提供正版授权采购、技术选型、个性化维保等服务,帮助客户实现技术合规、降本增效与风险可控。
慧都科技是DevExpress的中国区的合作伙伴,DevExpress作为用户界面领域的优秀产品,帮助企业高效构建权限管理、数据可视化(如网格/图表/仪表盘)、跨平台系统(WinForms/ASP.NET/.NET MAUI)及行业定制解决方案,加速开发并强化交互体验。
本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@wqylolg.cn
文章转载自:慧都网界面控件DevExpress WinForms v25.1将于今年年中更新,新版本将进一步提升AI方面的功能等,欢迎关注我们及时获取最新消息~
界面控件DevExpress WPF v25.1在今年年中更新,新版本将重点关注AI、可访问性和简化的项目设置等领域,欢迎关注我们及时获取最新消息~
DevExpress .NET MAUI控件在新的v24.2中重点增强了MVVM功能,欢迎下载最新版体验!
高性能图表组件LightningChart .NET v12.2.1现在发布了!新版本支持全新的 .NET 目标框架、HERE地图渲染服务升级等,欢迎下载最新版体验!
优秀的界面控件开发包,帮助企业构建卓越应用!
DevExpress DXperience Subscription高性价比的企业级.NET用户界面套包,助力企业创建卓越应用!
服务电话
重庆/ 023-68661681
华东/ 13452821722
华南/ 18100878085
华北/ 17347785263
客户支持
技术支持咨询服务
服务热线:400-700-1020
邮箱:sales@wqylolg.cn
关注我们
地址 : 重庆市九龙坡区火炬大道69号6幢