保健励志美文体育育儿作文
投稿投诉
作文动态
热点娱乐
育儿情感
教程科技
体育养生
教案探索
美文旅游
财经日志
励志范文
论文时尚
保健游戏
护肤业界

DevExpressWPF入门指南运行时生成的POCO视图模

  POCO(PlainOldCLRObjects)视图模型简化并加快了开发过程。
  POCO视图模型允许您:将可绑定属性定义为简单的自动实现的属性。创建在运行时用作命令的方法。使属性和方法实现特定于MVVM的接口。
  这允许您创建干净、简单、可维护和可测试的MVVM代码,POCO视图模型与任何WPF控件完全兼容。
  您可以使用在编译时生成的视图模型在编译时为您的视图模型生成样板代码。
  DevExpressUniversalSubscription官方最新版免费下载试用,历史版本下载,在线文档和帮助文件下载慧都网Services
  DevExpressMVVM框架包括Services机制,下面的代码示例演示了如何访问MessageBox服务。
  CusingDevExpress。Mvvm。POCO;。。。publicclassLoginViewModel{publicIMessageBoxServiceMessageBoxService{get{returnthis。GetServiceIMessageBoxService();}}}依赖注入
  要将视图绑定到视图模型,请创建解析正确ViewModel类型的MarkupExtension:
  CpublicclassDISource:MarkupExtension{publicstaticFuncType,object,string,objectResolver{get;set;}publicTypeType{get;set;}publicobjectKey{get;set;}publicstringName{get;set;}publicoverrideobjectProvideValue(IServiceProviderserviceProvider)Resolver?。Invoke(Type,Key,Name);}
  在应用程序启动时注册解析器:
  CprotectedoverridevoidOnStartup(StartupEventArgse){base。OnStartup(e);DISource。ResolverResolve;}objectResolve(Typetype,objectkey,stringname){if(typenull)returnnull;if(key!null)returnContainer。ResolveKeyed(key,type);if(name!null)returnContainer。ResolveNamed(name,type);returnContainer。Resolve(type);}
  通过以下方式在XAML中指定DataContext:
  XAMLDataContext{common:DISourceTypecommon:MainViewModel}
  要在依赖注入容器中使用POCO视图模型,请利用ViewModelSource。GetPOCOType方法注册在运行时生成的POCO类型:
  Ccontainer。RegisterType(typeof(IMainViewModel),ViewModelSource。GetPOCOType(typeof(MainViewModel)));查看模型父子关系
  POCO视图模型可以通过父子关系相互关联。这是通过ISupportParentViewModel接口实现的,该接口在您使用ViewModelSource类创建POCO对象时自动实现。通过这个接口,子视图模型可以访问在主视图模型中注册的服务。自动IDataErrorInfo实现
  IDataErrorInfo接口是WPF中数据验证的标准机制,您可以使用此接口为每个单独的属性或整个对象定义验证规则。POCO机制允许您基于定义的属性或FluentAPI自动实现IDataErrorInfo接口。
  要启用此功能,请为您的视图模型应用POCOViewModel属性并将POCOViewModel。ImplementIDataErrorInfo参数设置为True。
  CAttributebasedapproach〔POCOViewModel(ImplementIDataErrorInfotrue)〕publicclassLoginViewModel{〔Required(ErrorMessagePleaseentertheusername。)〕publicvirtualstringUserName{get;set;}}FluentAPI〔POCOViewModel(ImplementIDataErrorInfotrue)〕〔MetadataType(typeof(LoginViewModel。Metadata))〕publicclassLoginViewModel{publicclassMetadata:IMetadataProviderLoginViewModel{voidIMetadataProviderLoginViewModel。BuildMetadata(MetadataBuilderLoginViewModelbuilder){builder。Property(xx。UserName)。Required(()Pleaseentertheusername。);}}publicvirtualstringUserName{get;set;}}
  当ViewModelSource生成ViewModel的后代时,它会实现IDataErrorInfo接口,如下所示:
  CpublicclassLoginViewModel:IDataErrorInfo{。。。stringIDataErrorInfo。Error{get{returnstring。Empty;}}stringIDataErrorInfo。this〔stringcolumnName〕{get{returnIDataErrorInfoHelper。GetErrorText(this,columnName);}}}
  IDataErrorInfoHelper类允许您根据指定的DataAnnotation属性或FluentAPI获取错误。
  下面的代码示例演示了如何使用POCO机制来实现IDataErrorInfo接口。
  MainView。xamlUserControlx:ClassExample。View。MainViewxmlnshttp:schemas。microsoft。comwinfx2006xamlpresentationxmlns:xhttp:schemas。microsoft。comwinfx2006xamlxmlns:dhttp:schemas。microsoft。comexpressionblend2008xmlns:mchttp:schemas。openxmlformats。orgmarkupcompatibility2006xmlns:dxhttp:schemas。devexpress。comwinfx2008xamlcorexmlns:dxehttp:schemas。devexpress。comwinfx2008xamleditorsxmlns:dxmvvmhttp:schemas。devexpress。comwinfx2008xamlmvvmxmlns:ViewModelclrnamespace:Example。ViewModelmc:Ignorabledd:DesignHeight400d:DesignWidth400DataContext{dxmvvm:ViewModelSourceTypeViewModel:MainViewModel}UserControl。Resourcesdxmvvm:BooleanNegationConverterx:KeyBooleanNegationConverterUserControl。ResourcesGridStackPanelOrientationVerticalMargin10dxe:ValidationService。IsValidationContainerTruex:NamevalidationContainerGridGrid。ColumnDefinitionsColumnDefinitionWidthColumnDefinitionWidthGrid。ColumnDefinitionsStackPanelOrientationVerticalMargin0,0,4,6TextBlockTextNameMargin6,2,0,2dxe:TextEditNullTextFirstEditValue{BindingFirstName,ValidatesOnDataErrorsTrue,UpdateSourceTriggerPropertyChanged}StackPanelStackPanelOrientationVerticalMargin4,0,0,6Grid。Column1TextBlockTextMargin6,2,0,2dxe:TextEditNullTextLastEditValue{BindingLastName,ValidatesOnDataErrorsTrue,UpdateSourceTriggerPropertyChanged}StackPanelGridStackPanelOrientationVerticalMargin0,0,0,6TextBlockTextEmailMargin6,2,0,2dxe:TextEditEditValue{BindingEmail,ValidatesOnDataErrorsTrue,UpdateSourceTriggerPropertyChanged}StackPanelStackPanelOrientationVerticalMargin0,0,0,6TextBlockTextPasswordMargin6,2,0,2dxe:PasswordBoxEditEditValue{BindingPassword,ValidatesOnDataErrorsTrue,UpdateSourceTriggerPropertyChanged}StackPanelStackPanelOrientationVerticalMargin0,0,0,6TextBlockTextConfirmPasswordMargin6,2,0,2dxe:PasswordBoxEditEditValue{BindingConfirmPassword,ValidatesOnDataErrorsTrue,UpdateSourceTriggerPropertyChanged}StackPanelButtonVerticalAlignmentTopContentSignUpWidth150HorizontalAlignmentRightMargin0,10IsEnabled{BindingPath(dxe:ValidationService。HasValidationError),ElementNamevalidationContainer,Converter{StaticResourceBooleanNegationConverter}}StackPanelGridUserControl
  MainViewModel。csusingDevExpress。Mvvm;usingDevExpress。Mvvm。DataAnnotations;usingSystem。Windows。Media;namespaceExample。ViewModel{〔POCOViewModel(ImplementIDataErrorInfotrue)〕publicclassMainViewModel:ViewModelBase{staticPropertyMetadataBuilderMainViewModel,stringAddPasswordCheck(PropertyMetadataBuilderMainViewModel,stringbuilder){returnbuilder。MatchesInstanceRule((name,vm)vm。Passwordvm。ConfirmPassword,()Thepasswordsdontmatch。)。MinLength(8,()Thepasswordmustbeatleast8characterslong。)。MaxLength(20,()Thepasswordmustnotexceedthelengthof20。);}publicstaticvoidBuildMetadata(MetadataBuilderMainViewModelbuilder){builder。Property(xx。FirstName)。Required(()Pleaseenterthefirstname。);builder。Property(xx。LastName)。Required(()Pleaseenterthelastname。);builder。Property(xx。Email)。EmailAddressDataType(()Pleaseenteracorrectemailaddress。);AddPasswordCheck(builder。Property(xx。Password))。Required(()Pleaseenterthepassword。);AddPasswordCheck(builder。Property(xx。ConfirmPassword))。Required(()Pleaseconfirmthepassword。);}publicvirtualstringFirstName{get;set;}publicvirtualstringLastName{get;set;}publicvirtualstringEmail{get;set;}publicvirtualstringPassword{get;set;}publicvirtualstringConfirmPassword{get;set;}publicvoidOnPasswordChanged(){this。RaisePropertyChanged(()ConfirmPassword);}publicvoidOnConfirmPasswordChanged(){this。RaisePropertyChanged(()Password);}}}
  MainViewModel。vbImportsDevExpress。MvvmImportsDevExpress。Mvvm。DataAnnotationsImportsSystem。Windows。MediaNamespaceExample。ViewModelPOCOViewModel(ImplementIDataErrorInfo:True)PublicClassMainViewModelInheritsViewModelBasePrivateSharedFunctionAddPasswordCheck(ByValbuilderAsPropertyMetadataBuilder(OfMainViewModel,String))AsPropertyMetadataBuilder(OfMainViewModel,String)Returnbuilder。MatchesInstanceRule(Function(name,vm)vm。Passwordvm。ConfirmPassword,Function()Thepasswordsdontmatch。)。MinLength(8,Function()Thepasswordmustbeatleast8characterslong。)。MaxLength(20,Function()Thepasswordmustnotexceedthelengthof20。)EndFunctionPublicSharedSubBuildMetadata(ByValbuilderAsMetadataBuilder(OfMainViewModel))builder。Property(Function(x)x。FirstName)。Required(Function()Pleaseenterthefirstname。)builder。Property(Function(x)x。LastName)。Required(Function()Pleaseenterthelastname。)builder。Property(Function(x)x。Email)。EmailAddressDataType(Function()Pleaseenteracorrectemailaddress。)AddPasswordCheck(builder。Property(Function(x)x。Password))。Required(Function()Pleaseenterthepassword。)AddPasswordCheck(builder。Property(Function(x)x。ConfirmPassword))。Required(Function()Pleaseconfirmthepassword。)EndSubPublicOverridablePropertyFirstName()AsStringPublicOverridablePropertyLastName()AsStringPublicOverridablePropertyEmail()AsStringPublicOverridablePropertyPassword()AsStringPublicOverridablePropertyConfirmPassword()AsStringPublicSubOnPasswordChanged()Me。RaisePropertyChanged(Function()ConfirmPassword)EndSubPublicSubOnConfirmPasswordChanged()Me。RaisePropertyChanged(Function()Password)EndSubEndClassEndNamespace
  DevExpressWPF
  DevExpressWPF拥有120个控件和库,将帮助您交付满足甚至超出企业需求的高性能业务应用程序。通过DevExpressWPF能创建有着强大互动功能的XAML基础应用程序,这些应用程序专注于当代客户的需求和构建未来新一代支持触摸的解决方案。无论是Office办公软件的衍伸产品,还是以数据为中心的商业智能产品,都能通过DevExpressWPF控件来实现。

银行实习日记分享在银行顶岗实习,顶岗实习过程中我们一定可以收获很多经验。大家要学会总结这些经验,写好顶岗实习日记,这样才能保持进步哦。以下是小编为大家整理好的银行顶岗实习日记,欢迎大家阅读参考……涠洲岛历险记四年级作文涠洲岛位于广西北海市海域中,是中国地质年龄最年轻的火山岛,也是广西最大的海岛,岛上有海蚀、海积及溶岩等无限美丽的景观。这些就是爸爸在我们上岛之前描述的涠洲岛美景。涠洲岛的确很美……我的中秋节小学五年级作文无论在学习、工作或是生活中,大家都接触过作文吧,作文是一种言语活动,具有高度的综合性和创造性。那么你知道一篇好的作文该怎么写吗?以下是小编为大家整理的我的中秋节小学五年级作文,……我学会了电脑许多人都觉得学电脑是一件很难的事情。我刚开始学电脑的时候也顾虑重重,可是见到别人的手在电脑键盘上灵活地敲击,又觉得十分神秘,总想试试。一天爸爸对我说:ldquo;小丹,爸……Elasticsearch基础查询表达式查询表达式查询表达式(QueryDSL)是一种非常灵活又富有表现力的查询语言。Elasticsearch使用它可以以简单的JSON接口来展现Lucene功能的绝大部分。……Kotlin条件控制Kotlin条件控制IF表达式一个if语句包含一个布尔表达式和一条或多条语句。传统用法varmaxaif(ab)maxb使用elsevarmax:Intif(ab){ma……璇的独白2014年11月30日一眨眼,12年啊,不知道身在远方的朋友你们可好啊?我们很快就要见面了,呵呵,好玩的游戏也即将开始了呢在这12年中,我不知受了多少委屈,但是我也……揭秘物体的真实颜色科普之前的文章已经详细分析过物体颜色的起源,在物体的表面会产漫反射和镜面反射两种,其中漫反射的光进入到眼睛表现为物体的本身颜色,镜面反射的光产生的是光源的反射光斑,会大大降低物……三副对联金榜题名关于金榜题名的对联有那下?各位金榜题名的。朋友们,小编已经整理了相关的对联,请看:【横批:小试牛刀】上联:两袖书香录名校下联:一鸣得路为卿相【横批:志存……主题作文之马马的作文(一)二表姐的爷爷奶奶住在一座大山脚下,因为山陡路峭,交通不便,所以他们家便养了一匹马来作主要的运输工具。它的主要任务就是把山外的东西驮进来或是把山里的东西运出去……工业显示器和商用显示器的区别是什么?大家对商用显示器肯定很熟悉,但是对工业显示器就略显陌生了。其实工业显示器和商用显示器的主要区分在于稳定性跟抗干扰性、图画清晰度、颜色复原度、设备端口、IO接口、散热架构等方面,……西瓜皮看图作文500字夏天,真是酷暑难熬啊!这一天,贴心的。妈妈为小明买回了一个大西瓜。小明在屋里津津有味地吃西瓜,他挥动着手里的大刀将西瓜劈成许多份,然后开心地吃了起来。西瓜黑的籽,红……
大华科技大学正式更名为敏实科技大学高校合并高校设置高校更名大华科技大学日前申请改名,4月中收到回函同意,并大动作宣布8月将改名为敏实科技大学,校长张浣芸表示,大华科技大学将于今年8月更名为敏实科技大学,最……太阳的语言太阳的语言一眼望去,太阳已经过了山头。天空如乏了油的灯,红光渐渐地减弱。上一次望着太阳,还是清晨。那太阳,是多么的灿烂。眨……难忘的新年年三十那天,我家可热闹了!吃过早饭,一家人就忙起来。妈妈、姥姥、舅妈准备丰盛的午饭。我和姐姐、爸爸挂彩灯、贴春联。我最喜欢贴春联了,上联在右,下联在左。贴好我就嚷嚷起来:……24节气之春分农业谚语春分节到不能让,地瓜母子快上炕。你知道春分有哪些农业谚语吗?下面是语文迷小编整理的春分谚语,希望大家认真阅读!【春分谚语】种子买得贱,空地一大片。买种省了钱,……品读人生品读生活人生像茶几上面摆满了杯具(悲剧)人生更像茶叶终究要被侵泡在杯具之中人生就有牙缸、你可以把它看成杯具也可以看成洗具(喜剧)人生就像茶几上面摆满了杯具、当你努力跳出一个杯具时、却发……阿姨,我想对你说阿姨,我想对你说每当我看到和蔼可亲的阿姨,我就会想起三年级时小店店主的模样,那模样挥之不去,抹之不掉,在我的心里留下了一道疤痕。今天刚放学,我就向往常一样和同学们一……高中以成长为话题作文我们每个人都会因为某个事情,某个时间成长,回想起来也是一番滋味,高中以成长为话题作文怎么写?相信很多人都想知道吧?以下是小编为您整理的高中以成长为话题作文相关资料,欢迎阅读!高……我理想中的未来生活作文时间的轮盘已经转到了21世纪,人类的物质水平达到了前所未有的水平。然而纵观人类的进步,环境问题越来越严峻。野生动物面临灭绝;热带雨林遭到大肆砍伐;许多河流遭到污染而我们的……我的观察日记100字作文我的观察日记100字作文提供给小朋友参考,希望对你们写日记起到只是指示性的作用!我的观察日记100字作文一放学回家,我兴冲冲的告诉爸爸,老师今天布置了一项泡豆子的作……雷锋在我心中700字初中作文导语:我想大家对ldquo;雷锋rdquo;这两个字应该并不陌生吧!在学校老师经常组织我们向雷锋叔叔学习,在社会上hellip;hellip;。但是在现实生活中又有几个人能像雷……以自己的方式飞翔给我一双翅膀,我要学会飞翔,给我一双翅膀,我要飞向远方。从我们出生到这个世界,飞翔的旅途就开始了。那时我们只不过是一只只幼小的雏鸟而已,生活在衣食无忧的鸟巢里,只知……我渴望得到帮助作文深夜,北风呼啸。寒意一次次侵袭全身,使我从倦意中清醒。空白的作业纸让我烦躁不已,心绪杂乱无章。走读生不允许进校上晚自习的规定让我遇到了麻烦,几乎坐立不安,寝食不思。每天的……
友情链接:易事利快生活快传网聚热点七猫云快好知快百科中准网快好找文好找中准网快软网