安庆大理运城常德铜陵江西
投稿投诉
江西南阳
嘉兴昆明
铜陵滨州
广东西昌
常德梅州
兰州阳江
运城金华
广西萍乡
大理重庆
诸暨泉州
安庆南充
武汉辽宁

界面控件DevExpressWinFormMVVM服务讲解(

9月13日 托天庙投稿
  DevExpressUniversalSubscription官方最新版免费下载试用,历史版本下载,在线文档和帮助文件下载慧都网
  考虑像显示来自ViewModel的通知(例如,消息框)这样的微不足道的任务,作为可视化元素,任何消息框实际上都是视图的一部分。因此,如果你直接从ViewModel显示消息框(定义一个调用MessageBox。Show()方法的命令),这个简单的代码将破坏主要的MVVM概念ViewModels不能引用Views,并使其无法编写ViewModel的单元测试。为了解决这个困难,DevExpressMVVM框架实现了服务。
  服务是一种IOC模式,它删除了ViewModel和View层之间的任何引用。在代码中,服务是在ViewModel代码中使用的接口,没有任何关于何时和如何实现该接口的假设。
  您可以实现自己的自定义服务以及使用DevExpressServices,无论您使用什么服务,通用工作流程都保持不变:在代码中定义服务(如果您使用的是DevExpress已经实现的服务,则跳过);在特定的视图中注册它;在ViewModel中检索服务并使用其方法。DevExpressServices
  DevExpressMVVM框架已经为大多数常见任务提供了现成的服务显示消息、弹出窗口、对话框、添加应用程序UI管理器文档等。例如,以下ViewModel代码通过定义IMessageBoxService类型的属性来检索XtraMessageBoxService。
  CViewModelpublicclassMyViewModel{protectedIMessageBoxServiceMessageBoxService{get{returnthis。GetServiceIMessageBoxService();}}}
  VB。NETViewModelPublicClassMyViewModelProtectedReadOnlyPropertyMessageBoxService()AsIMessageBoxServiceGetReturnMe。GetService(OfIMessageBoxService)()EndGetEndProperty
  重要提示:GetService方法不是线程安全的,不应从后台线程调用。
  对于POCOViewModel,您可以使用以下故障安全语法,该语法将自动使用this。GetService方法或在出现问题时引发异常。
  CPOCOViewModelprotectedvirtualIMessageBoxServiceMessageBoxService{get{thrownewSystem。NotImplementedException();}}
  VB。NETPOCOViewModelProtectedOverridableReadOnlyPropertyMessageBoxService()AsIMessageBoxServiceGetThrowNewSystem。NotImplementedException()EndGetEndProperty
  检索服务后,您可以在ViewModel中使用其方法:
  CpublicvoidSayHello(){MessageBoxService。Show(Hello!);}
  VB。NETPublicSubSayHello()MessageBoxService。Show(Hello!)EndSub
  最后,在视图中注册您的服务。服务要么注册在本地容器中以在单个View中使用(本地服务),要么注册到允许您在整个应用程序中使用注册服务的全局静态(单例)服务容器(全局服务)。
  CGlobalserviceDevExpress。Mvvm。ServiceContainer。Default。RegisterService(newSomeService());LocalserviceserviceContainer。RegisterService(newSomeFilterService(ModuleType。MyCustomFilter));
  VB。NETGlobalserviceDevExpress。Mvvm。ServiceContainer。Default。RegisterService(NewSomeService())LocalserviceserviceContainer。RegisterService(NewSomeFilterService(ModuleType。MyCustomFilter))
  当创建ViewModel时,服务也可以在运行时在服务容器中注册。
  Cthis。ServiceContainer。RegisterService(newServices。AnotherService());
  VB。NETMe。ServiceContainer。RegisterService(NewServices。AnotherService())
  最后,您可以通过在此级别提供自定义服务实现来覆盖ViewModel层次结构中任何级别的父级服务实现。
  CserviceContainer。RegisterService(newNotImplementedCustomService(ModuleType。MyMainView));
  VB。NETserviceContainer。RegisterService(NewNotImplementedCustomService(ModuleType。MyMainView))
  使用MvvmContext组件,您无需记住这个底层服务容器机制。该组件的API提供了易于使用的方法来注册全局和本地级别的服务。
  CStaticmethodthatregisterstheglobalDevExpressXtraDialogServiceMVVMContext。RegisterXtraDialogService();RegisterstheService1serviceinthedefaultservicecontainer(globalservice)mvvmContext1。RegisterDefaultService(newService1());RegistersthelocalService1forusewithinthecurrentViewonlymvvmContext1。RegisterService(newService2());
  VB。NETStaticmethodthatregisterstheglobalDevExpressXtraDialogServiceMVVMContext。RegisterXtraDialogService()RegisterstheService1serviceinthedefaultservicecontainer(globalservice)mvvmContext1。RegisterDefaultService(NewService1())RegistersthelocalService1forusewithinthecurrentViewonlymvvmContext1。RegisterService(NewService2())
  许多随时可用的服务已经在全局静态容器中注册,因此您甚至不需要手动注册它们。删除MessageBox服务演示中的RegisterMessageBoxService方法调用,您会注意到该服务仍在工作。
  如果需要,您可以重新定义这些服务注册,为此请使用MVVMContext类的相应静态Register。。。方法。例如,XtraMessageBoxService和FlyoutMessageBoxService示例的ViewModel与第一个示例的ViewModel相同。所有三个ViewModel都检索实现IMessageBoxService的服务,但是使用不同的静态Register。。。方法会强制使用不同的服务。
  相同的方法允许来自DialogServices组的示例显示不同的对话框,尽管ViewModel代码是相同的。
  CprotectedIDialogServiceDialogService{get{returnthis。GetServiceIDialogService();}}
  VB。NETProtectedReadOnlyPropertyDialogService()AsIDialogServiceGetReturnMe。GetService(OfIDialogService)()EndGetEndProperty
  由于注册不同服务的视图代码而调用不同的对话框。
  CXtraDialogserviceMVVMContext。RegisterXtraDialogService();FlyoutDialogserviceMVVMContext。RegisterFlyoutDialogService();
  VB。NETXtraDialogserviceMVVMContext。RegisterXtraDialogService()FlyoutDialogserviceMVVMContext。RegisterFlyoutDialogService()
  DevExpressWinForm
  DevExpressWinForm拥有180组件和UI库,能为WindowsForms平台创建具有影响力的业务解决方案。DevExpressWinForms能完美构建流畅、美观且易于使用的应用程序,无论是Office风格的界面,还是分析处理大批量的业务数据,它都能轻松胜任!
投诉 评论 转载

人机协作智能声纹,定义创新金融风控从何时起,我们意识到AI可能会对人类社会产生重大影响?AlphaGo打败李世石?汽车自动驾驶?五年前,我们绝对想不到科幻片中的桥段会变得如此触手可及。不可否认,人工智能虽无法进……人类的起源?人类的起源,人类只是地球上很多物种之一。只有不断增加生命体的进化才能让人类这个品种活得更久远。人类一直在探索自身的基因进化秘密,这就是长生的秘密。从古至今都在研究这个秘密。长生……陕西国资加注人工智能长安汇通旗下公司1000万元投资欧卡智舶本报记者殷高峰近期,位于西安高新区的无人船创业公司陕西欧卡电子智能科技有限公司(以下简称欧卡智舶)宣布完成5000万元的A轮融资。领投方为青锐创投,中信建投资本、中关村中……苹果选择让WWDC2022成为线上活动的可能性非常大美国娱乐软件协会(ESA)于1月6日表示,由于新冠疫情持续反复,为了保证参展商和与会者的安全,今年的E3游戏展将继续在线上进行。基于当前情况,外媒认为,苹果选择让WWDC……界面控件DevExpressWinFormMVVM服务讲解(DevExpressUniversalSubscription官方最新版免费下载试用,历史版本下载,在线文档和帮助文件下载慧都网考虑像显示来自ViewModel的通知(例……联想柳杨和华为任阿里马的差别柳和任都是40年代生人,60年代的大学毕业生。柳的一次决择让我们错失了芯片自主研发的一个最好机会,而任则选择了自主研发应该是在1984年,在柳传志盛邀下,联想最早的东家中……美国巨头断供大疆是雕虫小技?背后市场中企仅5,倪光南警告文华商韬略吴苏在线协同办公,网友们一般都用飞书、钉钉、企业微信等,而在线设计协作,估值达到100亿美元的美国设计软件巨头Figma是不少人的心头好。这是因为,Fig……iPhoneSE3刘海屏有戏?外媒曝苹果新机有三款型号,库克近日台湾媒体的消息显示,因为苹果春季发布会的临近,苹果2022年的首款手机iPhoneSE3已经开始量产。目前关于iPhoneSE3的外观设计,国内媒体认为还是和iPhoneS……重磅深聪智能用芯携手美的集团,加速智能家居产业化布局2020年1月15日,思必驰旗下芯片企业深聪智能与美的集团在智能家居领域开启战略性的跨界合作,双方将发挥各自技术、产品及资源优势,加速智能家居产业链上下游布局以及新产品的创新开……人社部公布13种技术新职业,年薪平均30万,你能胜任么?近日,人社部公布了13种技术新职业,不出所料成为了大众讨论的焦点,还引领了一波未来就业择业的潮流。不少人第一次知道了这些高端又前景广阔的新职业,那么如何投身进去,哪几个的钱景又……对话十四五智慧交通要采用新思维方式智慧交通和智能交通有什么区别?未来的智慧交通应该是什么样的?车路协同自动驾驶下一步应该如何加快发展?关于智慧交通的这些问题,一起来听听专家怎么说。问:我们现在经常能看到大……清华学霸高杏欣破解我国北斗编码,获美国嘉奖,回国基本无望中国北斗高高挂在北半球夜空的北斗七星像指南针一样为人们指明方向,对古代出行和辨别季节起着重要作用。随着社会的发展,科技的进步,一种全新的技术在该基础上更新创造,并不断改进……
麒麟9905G打王者这种主流游戏能撑几年?黑掉特斯拉FSD!乌克兰黑客这样完美运行特斯拉自动驾驶为什么不能把互联网交易用火车和马车比较浙江桐庐有哪些旅游景点?中国能否研发量子计算机从而实现对美国芯片的弯道超车?秋冬盲目进补不可取,宝宝脾好才能吸收好盘点被iPhone带坏的设计,有些早已改正,但还有厂商执迷不使用Prometheus和Grafana搭建SpringBoQtD指针和Q指针及使用字节终止招聘阿里涉事男员工选人,要选对人对代码不感冒,我应该怎么办?iPhone手机不同版本iOS系统的功能技巧宝宝必打的疫苗有哪些?四有干部学习体会责任重大使命光荣人一生必看的优秀书籍分享姥姥家的夏景作文全屋个家具详细尺寸金牌设计师亲自测量周公解梦梦见死人复活双语世界杯2022卡塔尔世界杯开幕,主题英语知识来啦山药减肥效果佳5种做法瘦身又丰胸ipsa流金水国内版和日本版有什么区别?西崦小学五年级作文游晃桥水库出纳个人年度工作总结

友情链接:中准网聚热点快百科快传网快生活快软网快好知文好找七猫云易事利