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

云计算网站建设太原网站快速排名提升

云计算网站建设,太原网站快速排名提升,哪个网站能帮助做试卷,龙元建设集团股份有限公司网站地址文章目录 使用ValidationRule实现检测用户输入EmptyValidationRule 非空校验TextBox设置非空校验TextBox设置非空校验并显示校验提示 结语 使用ValidationRule实现检测用户输入 EmptyValidationRule是TextBox内容是否为空校验,TextBox的Binding属性设置ValidationRu…

文章目录

  • 使用ValidationRule实现检测用户输入
    • EmptyValidationRule 非空校验
    • TextBox设置非空校验
    • TextBox设置非空校验并显示校验提示
  • 结语

使用ValidationRule实现检测用户输入

EmptyValidationRule是TextBox内容是否为空校验,TextBox的Binding属性设置ValidationRule后,TextBox将自带校验红框效果。但是默认是没有报错提示的。需要开启验证错误的通知属性 NotifyOnValidationError,这样可以通过绑定 Validation.Error 事件处理程序获取到Message进行提示

EmptyValidationRule 非空校验

public class EmptyValidationRule : ValidationRule
{public override ValidationResult Validate(object value, CultureInfo cultureInfo){string str = value as string;if (string.IsNullOrWhiteSpace(str)){return new ValidationResult(false, "不能为空,输入有效值");}return ValidationResult.ValidResult;}
}

TextBox设置非空校验

UpdateSourceTrigger="PropertyChanged" 设置每次输入都触发双向绑定,Binding.ValidationRules 设置校验逻辑
ValidatesOnTargetUpdated="True" 设置 首次加载就校验(默认启动程序的时候不开启校验,当你第一次输入才校验)

<StackPanelGrid.Row="1"HorizontalAlignment="Center"Orientation="Horizontal"><TextBlock VerticalAlignment="Center" Text="年龄:" /><TextBoxWidth="200"Height="30"Margin="10,0"VerticalAlignment="Center"VerticalContentAlignment="Center"><TextBox.Text><Binding Path="Age" UpdateSourceTrigger="PropertyChanged"><Binding.ValidationRules><Valid:EmptyValidationRule ValidatesOnTargetUpdated="True" /></Binding.ValidationRules></Binding></TextBox.Text></TextBox>
</StackPanel>

在这里插入图片描述
在这里插入图片描述

TextBox设置非空校验并显示校验提示

按照上述说明的【需要开启验证错误的通知属性 NotifyOnValidationError,这样可以通过绑定 Validation.Error 事件处理程序获取到Message进行提示】
这边采用的是WPF的行为Behavior。
IValidationExceptionHandler,输入校验接口,需要进行校验的页面的ViewModel需要继承并实现他的两个属性IsValid 以及
Message

/// <summary>
/// 输入校验接口
/// </summary>
public interface IValidationExceptionHandler
{/// <summary>/// 是否有校验异常/// </summary>bool IsValid { get; set; }/// <summary>/// 异常提示/// </summary>string Message { get; set; }
}
  1. 首先先定义一个行为 ValidationExceptionBehavior
public class ValidationExceptionBehavior : Behavior<FrameworkElement>
{// 实现你的行为逻辑protected override void OnAttached(){// 在此处理附加逻辑// AssociatedObject 就是 行为的对象 FrameworkElementAssociatedObject.AddHandler(Validation.ErrorEvent, new EventHandler<ValidationErrorEventArgs>(OnValidationError));}protected override void OnDetaching(){// 在此处理分离逻辑//移除 Validation.Error 事件监听this.AssociatedObject.RemoveHandler(Validation.ErrorEvent, new EventHandler<ValidationErrorEventArgs>(OnValidationError));}private void OnValidationError(object sender, ValidationErrorEventArgs e){IValidationExceptionHandler validationException = null;if (AssociatedObject.DataContext is IValidationExceptionHandler){validationException = this.AssociatedObject.DataContext as IValidationExceptionHandler;}if (validationException == null) return;//OriginalSource 触发事件的元素var element = e.OriginalSource as UIElement;if (element == null) return;//ValidationErrorEventAction.Added  表示新产生的行为if (e.Action == ValidationErrorEventAction.Added){// EmptyValidationRule返回的结果字符串validationException.IsValid = true;string error = e.Error.ErrorContent.ToString();validationException.Message = error;}else if (e.Action == ValidationErrorEventAction.Removed) //ValidationErrorEventAction.Removed  该行为被移除,即代表验证通过{validationException.IsValid = false;validationException.Message = string.Empty;}}}
  1. TextBox的Binding属性中的NotifyOnValidationError="True",开启验证错误的通知属性,产生 Validation.Error 事件。
<StackPanelGrid.Row="1"HorizontalAlignment="Center"Orientation="Horizontal"><TextBlock VerticalAlignment="Center" Text="年龄:" /><TextBoxWidth="200"Height="30"Margin="10,0"VerticalAlignment="Center"VerticalContentAlignment="Center"><TextBox.Text><!--  开启验证错误的通知属性 NotifyOnValidationError=“True” 。这样就可以产生 Validation.Error 事件  --><BindingNotifyOnValidationError="True"Path="Age"UpdateSourceTrigger="PropertyChanged"><Binding.ValidationRules><!--  ValidatesOnTargetUpdated="True" 首次加载就校验  --><Valid:EmptyValidationRule ValidatesOnTargetUpdated="True" /></Binding.ValidationRules></Binding></TextBox.Text></TextBox><!--  显示校验异常内容  --><LabelMinWidth="100"VerticalAlignment="Center"VerticalContentAlignment="Center"Content="{Binding Message}"FontSize="15"Foreground="Red" />
</StackPanel>
  1. 绑定行为
    引入命名空间 xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"
    绑定行为
<i:Interaction.Behaviors><Valid:ValidationExceptionBehavior />
</i:Interaction.Behaviors>

在这里插入图片描述

效果
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

结语

校验异常可以有多种展现形式和方法。
可以在提交按钮时候,判断异常字符串是否为空,不为空弹窗。
可以行为中使用GalaSoft.MvvmLight中的Messenger进行发布订阅(注册消费)。
例如下面这样
当Message被赋值时,会触发 Messenger.Default.Send
在这里插入图片描述

ViewModol中

private string _message;/// <summary>
/// 实现 IValidationExceptionHandler的成员Message
/// </summary>
public string Message
{get { return _message; }set{_message = value;if (!string.IsNullOrWhiteSpace(_message)){// 发送消息Messenger.Default.Send<string, MainView>(_message);}RaisePropertyChanged();}
}

在页面初始化时注册弹窗事件
在这里插入图片描述

效果
在这里插入图片描述

http://www.mmbaike.com/news/22856.html

相关文章:

  • 深圳市宝安区松岗网络优化工作内容
  • 结婚网站模版产品推广思路
  • 信阳做网站汉狮网络网络营销方式有哪些?
  • 做网站要什么上海aso优化公司
  • 外贸网站建设书籍深圳百度推广客服电话多少
  • 织梦网站站标外链群发平台
  • 开个网站做英语培训b2b电子商务平台
  • 营销网站的建立适合40岁女人的培训班
  • 上海人才网积分查询谷歌seo运营
  • 网站开发 -(广告)百度站长工具怎么用
  • 新疆建设厅网站招标公告网站优化方案案例
  • 网站宣传推广seo 的作用和意义
  • 企业网站建设管理及推广邯郸网站建设优化
  • 个人网站的设计与实现的任务书外贸网站有哪些平台
  • 舞钢市城乡建设局网站优化设计答案六年级上册语文
  • 做医疗网站建设网络营销的公司有哪些
  • 北京营销型网站建设培训郑州seo代理外包
  • ssh可以做wap网站么关键词搜索引擎又称为
  • 长沙做营销型网站公司国内新闻最新消息简短
  • 做it行业招标网站有哪些域名
  • 有没有能帮人快速网站备案的机构舆情分析系统
  • 翻译网站建设百度搜索官网
  • 做那种事免费网站推广普通话图片
  • 青海公路建设市场信用息服务网站做网页的网站
  • 安徽网站开发公司建网站需要什么
  • 浙江做网站找谁个人推广app的妙招
  • 建站宝盒nicebox手机版常用的搜索引擎有哪些?
  • wordpress支持视频播放器插件下载梧州网站seo
  • wordpress企业 破解主题下载做seo需要用到什么软件
  • 建设工程平台网站网络营销推广活动