当前位置: 首页 > news >正文

七台河网站seo网络优化大师

七台河网站seo,网络优化大师,源代码大全,Oss怎么做静态网站官网#xff1a;https://primslibrary.com 源码地址#xff1a;https://guthub.com/PrismLibrary/prism Prism是由微软发布、维护的开源框架#xff0c;提供了一组设计模式的实现#xff0c;有助于编写结构良好的且可维护的XAML应用程序#xff0c;包括MVVM、依赖注入、命…官网https://primslibrary.com 源码地址https://guthub.com/PrismLibrary/prism Prism是由微软发布、维护的开源框架提供了一组设计模式的实现有助于编写结构良好的且可维护的XAML应用程序包括MVVM、依赖注入、命令、事件聚合器等。 关键程序集 Prism.Core实现MVVM的核心功能是一个与平台无关的项目可以在多个开发平台中使用(Prism.dll)。 如果只需要实现MVVM中的一些简单功能、例如属性变化通知、命令等只需要在Nuget中安装Prism.Core库即可。 Prism.Wpf包含了DialogService、Region、Module、Navigation和其他一些WPF功能使得WPF开发更加方便快捷Prism.Wpf.dll。 如果需要进一步使用WPF中的一些其他功能可以在Nuget中安装Prism.Wpf库由于Prism.Wpf依赖于Prism.Core因此无需再安装Prism.Core。 Prism.Unity包含Prism.Unity.Wpf.dll、Prism.DryIoc.Wpf.dll。 如果需要使用IOC则需要安装Prism.Unity由于Prism.Unity依赖于Prism.Wpf因此不需要再安装Prism.Wpf和Prism.Core 数据处理 一、属性变化通知 Prism框架提供了BindableBase类用于做数据处理例如属性的变化通知等。 五种属性变化通知方式 通过继承BindableBase类可以更加便捷地在WPF中实现属性变化通知具体有如下五种方式。 其中前三种没啥特殊的第四种方式可以在属性变化时通知其他属性的绑定控件而第五种方式则可以在属性发生变化后调用指定的函数。 public class MainViewModel : BindableBase {private string _value;public string Value{get { return _value; }set {// 第一种方式SetProperty(ref _value, value);// 第二种方式//this.OnPropertyChanged(new System.ComponentModel.PropertyChangedEventArgs(Value));// 第三种方式//this.RaisePropertyChanged();// 第四种方式可以通知另一个属性//SetProperty(ref _value, value, Var);// 第五种方式//SetProperty(ref _value, value, OnValueChanged);}}private void OnValueChanged(){//属性成功变化后的执行函数} }二、数据异常处理 Prism框架提供了ErrorsContainerT类型专门用于处理项目中出现地异常。其中泛型T为指定的异常消息类型。 1、INotifyDataErrorInfo接口 使用ErrorsContainerT需要实现INotifyDataErrorInfo接口。 实现INotifyDataErrorInfo接口主要需要实现其中的三个成员分别如下 event EventHandlerDataErrorsChangedEventArgs ErrorsChanged事件属性成员用于异常通知。 bool HasErrors属性成员用于判断是否存在异常。 一般会通过ErrorsContainer对象的HasErrors属性来进行判断。 IEnumerable GetErrors(string propertyName)方法成员用于获取相关属性名称的异常。 一般会通过ErrorsContainer对象的GetErrors方法来获得对应属性的异常。 public class MainViewModel :INotifyDataErrorInfo {//声明ErrorsContainer对象这里没有定义详细做法请看下文public ErrorsContainerstring _errorsContainer;public bool HasErrors _errorsContainer.HasErrors;public event EventHandlerDataErrorsChangedEventArgs ErrorsChanged;public IEnumerable GetErrors(string propertyName){return _errorsContainer.GetErrors(propertyName);}...... }2、ErrorsContainer类 构造函数 ErrorsContainerT(Actionstring raiseErrorsChanged)创建ErrorsContainer对象。 raiseErrorsChanged发生异常时的执行函数函数中要去触发异常发生事件也就是INotifyDataErrorInfo接口的ErrorsChanged事件成员。 常用成员 bool HasErrors属性成员用于判断当前是否存在异常。 IEnumerableT GetErrors(string propertyName)获取指定属性的异常集合。 propertyName要获取异常的属性名称。 SetErrors(string propertyName, IEnumerableT newValidationResults)设置异常也就是发生异常了。 propertyName触发异常的属性名称。newValidationResults异常集合可以是string数组也可以是其他类型数组。 3、具体实现过程 异常处理编写 实现INotifyDataErrorInfo接口 public class MainViewModel : INotifyDataErrorInfo {public bool HasErrors throw new NotImplementedException();public event EventHandlerDataErrorsChangedEventArgs ErrorsChanged;public IEnumerable GetErrors(string propertyName){throw new NotImplementedException();} }定义ErrorsContainerT对象属性完善INotifyDataErrorInfo成员实现 public class MainViewModel : INotifyDataErrorInfo {//定义异常属性private ErrorsContainerstring _errorsContainer;public ErrorsContainerstring ErrorsContainer{get {if (_errorsContainer null){_errorsContainer new ErrorsContainerstring(OnErrorHappend);}return _errorsContainer; }}//当异常发生时触发异常发生事件private void OnErrorHappend(string obj){ErrorsChanged?.Invoke(this, new DataErrorsChangedEventArgs(obj));}public bool HasErrors ErrorsContainer.HasErrors;public event EventHandlerDataErrorsChangedEventArgs ErrorsChanged;public IEnumerable GetErrors(string propertyName){return ErrorsContainer.GetErrors(propertyName);} }继承BindableBase类定义属性并实现属性变化通知在特定条件下发生异常 public class MainViewModel : BindableBase,INotifyDataErrorInfo {......//上文的内容private int _value;public int Value{get { return _value; }set {if (value 10){ErrorsContainer.SetErrors(Value, new string[] { 数值不能大于10 });}SetProperty(ref _value, value); }} }异常消息展示 在xaml中进行异常消息的使用 Window ......Window.DataContextlocal:MainViewModel//Window.DataContextWindow.ResourcesControlTemplate TargetType{x:Type TextBox} x:KeyctGridGrid.RowDefinitionsRowDefinition Heightauto/RowDefinition Heightauto//Grid.RowDefinitionsBorder x:Nameborder BorderBrush{TemplateBinding BorderBrush} BorderThickness{TemplateBinding BorderThickness} Background{TemplateBinding Background} SnapsToDevicePixelsTrueCornerRadius5ScrollViewer x:NamePART_ContentHost Focusablefalse HorizontalScrollBarVisibilityHidden VerticalScrollBarVisibilityHiddenVerticalContentAlignmentCenter Margin3,5 BorderThickness0//BorderTextBlock Grid.Row1 Text{Binding (Validation.Errors)[0].ErrorContent,RelativeSource{RelativeSource AncestorTypeTextBox,ModeFindAncestor}} ForegroundRed Margin10,5NametxtError//GridControlTemplate.TriggersTrigger PropertyValidation.HasError ValueTrueSetter PropertyVisibility ValueVisible TargetNametxtError/Setter PropertyToolTip Value{Binding RelativeSource{RelativeSource Self}, Path(Validation.Errors)[0].ErrorContent}//Trigger/ControlTemplate.Triggers/ControlTemplate/Window.ResourcesGridStackPanelTextBlock Text{Binding Value}/TextBox Text{Binding Value,UpdateSourceTriggerPropertyChanged} Template{StaticResource ct}//StackPanel/Grid /Window
http://www.zqtcl.cn/news/798769/

相关文章:

  • 网站主域名建设通怎么样
  • 网站是如何建立的广告设计与制作工作内容
  • 网站优化课程培训公司取名生成器免费
  • 如何设立网站做外国网站买域名
  • 惠州网站建设公司排名聊城专业网站设计公司
  • 网站建设龙岗电子商务有限公司官网
  • 分栏型网站服装设计网站模板
  • 建设网站备案与不备案区别企业网站怎么做排名
  • php mysql的网站开发html网站制作答辩ppt
  • 网站制作有名 乐云践新专家网页制作公司需要什么资质
  • 织梦怎么用框架实现在浏览器的地址栏只显示网站的域名而不显示出文件名电脑网站模板
  • 北京网络营销网站品牌营销增长公司哪家好
  • 网站反链有好处吗稷山网站建设
  • 廊坊网站群发关键词怎么在百度上推广自己的公司信息
  • 网站开发 沈阳免费模板建站
  • 商业性质网站建设步骤wordpress电影网盘
  • 网站的外部推广成都房产网官网
  • 深圳网站建设创想营销北京土巴兔全包装修价格表
  • 怎么发布php网站邯郸建设网站制作
  • 手机网站做多宽的图片wordpress顶部导航栏怎么创建
  • 如何做招聘网站的数据分析安徽黄山旅游攻略
  • 2022建站市场国际新闻直播
  • 茗哥网站建设装饰公司网站规划方案
  • 北京天津网站建设公司做平台网站要多久
  • 做我女朋友的表白句的网站做seo_教你如何选择网站关键词
  • 如何对网站用户分析徐州网站制作如何定位
  • 网站定制生成器龙岗网站设计讯息
  • 镇江市建设工程网站蜘蛛爬取网站
  • 个人备案网站可以做电影站吗微信做的地方门户网站
  • 网站上传根目录美点网络公司网站