WPF 数据验证
时间:2021-07-29
本文章向大家介绍WPF 数据验证,主要包括WPF 数据验证使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
参照了官网,但是 Error样式还是花了不少时间
<Window x:Class="WpfDemo.BindingValidationDemo2" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:local="clr-namespace:WpfDemo" mc:Ignorable="d" Title="BindingValidationDemo2" Height="300" Width="300" > <Window.Resources> <ControlTemplate x:Key="validationTemplate"> <DockPanel> <TextBlock Foreground="Red" FontSize="20">!</TextBlock> <AdornedElementPlaceholder/> </DockPanel> </ControlTemplate> <Style x:Key="textBoxInError" TargetType="{x:Type TextBox}"> <Style.Triggers> <Trigger Property="Validation.HasError" Value="true"> <Setter Property="ToolTip" Value="{Binding RelativeSource={x:Static RelativeSource.Self}, Path=(Validation.Errors)/ErrorContent}"/> </Trigger> </Style.Triggers> </Style> </Window.Resources> <Grid> <TextBox Name="textBox1" FontSize="15" Validation.ErrorTemplate="{StaticResource validationTemplate}" Style="{StaticResource textBoxInError}" Margin="68,31,72,198"> <TextBox.Text> <Binding Path="Text" RelativeSource="{RelativeSource Self}" NotifyOnValidationError="True" NotifyOnTargetUpdated="True"> <Binding.ValidationRules> <local:AgeRangeRule Min="21" Max="130" ValidatesOnTargetUpdated="True"/> </Binding.ValidationRules> </Binding> </TextBox.Text> </TextBox> <!--<Slider Maximum="100" Minimum="0" IsSnapToTickEnabled="True" x:Name="slider" HorizontalAlignment="Left" Margin="68,101,0,0" VerticalAlignment="Top" Width="150"/>--> </Grid> </Window>
using System; using System.Collections.Generic; using System.Globalization; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Shapes; namespace WpfDemo { /// <summary> /// RelativeSourceDemo2.xaml 的互動邏輯 /// </summary> public partial class BindingValidationDemo2 : Window { public BindingValidationDemo2() { InitializeComponent(); } } class AgeRangeRule : ValidationRule { public int Min { get; set; } public int Max { get; set; } public override ValidationResult Validate(object value, CultureInfo cultureInfo) { int age = 0; try { if (((string)value).Length > 0) age = Int32.Parse((String)value); } catch (Exception e) { return new ValidationResult(false, $"Illegal characters or {e.Message}"); } if ((age < Min) || (age > Max)) { return new ValidationResult(false, $"Please enter an age in the range: {Min}-{Max}."); } return ValidationResult.ValidResult; } } }
原文地址:https://www.cnblogs.com/JerryZhang320/p/15076950.html
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法