wpf TextBox 验证

以下内容适合像我一样的新手!有什么好的建议!还望大家指点!

效果图如下:

第一步:先 新建文件夹 CheckValueLibrary  在新建一个类 PhoneNumberCheck 用于验证 此类继承 ValidationRule 类!

PhoneNumberCheck  类代码如下(正则表达式有错,可借鉴方法):

<span style="font-size:14px;">namespace Demo1.CheckValueLibrary
{
    //
    public class PhoneNumberCheck<span style="color:#ff6600;">:ValidationRule</span>
    {
        public override ValidationResult Validate(object value, System.Globalization.CultureInfo cultureInfo)
        {
            string PoneNumber = value.ToString();
            bool rt= Regex.IsMatch(PoneNumber, "^[0-9]*$");// 正则表达式(验证是否为数字)
            if (!rt || PoneNumber.Length > 11)
            {
                return new ValidationResult(false,"请输入正确的电话号码");
            }
            else
            {
                return new ValidationResult(true, null);
            }
        }
    }
}</span>

第二步:在窗体中引用 验证的命名空间    xmlns:CheckValue="clr-namespace:Demo1.CheckValueLibrary"

第三步:自定义错误提示模板样式,代码如下:

<span style="font-size:14px;"><Window.Resources>
        <Style TargetType="TextBox">
            <!--错误模板-->
            <Setter Property="Validation.ErrorTemplate">
                <Setter.Value>
                    <ControlTemplate>
                        <Border CornerRadius="3" BorderBrush="Red" BorderThickness="1">
                            <!-- 若错误提示现在 在下方 去掉 Orientation="Horizontal" 即可 -->
                            <StackPanel Orientation="Horizontal">
                                <AdornedElementPlaceholder x:Name="Adorned"/>
                                <TextBlock Width="{TemplateBinding Width}" Foreground="Red">
                                    <!--显示错误提示内容-->
                                    <TextBlock.Text>
                                        <Binding ElementName="Adorned"
                                                 Path="AdornedElement.(Validation.Errors)[0].ErrorContent"/>
                                    </TextBlock.Text>
                                    <!--错误提示字的的样式-->
                                    <TextBlock.Effect>
                                        <DropShadowEffect Opacity="0.6" ShadowDepth="3" Color="Black"/>
                                    </TextBlock.Effect>
                                </TextBlock>
                            </StackPanel>
                        </Border>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>
    </Window.Resources></span>

第四步:在TextBox中 加入验证,代码如下:

<span style="font-size:14px;"><TextBox Margin="59,38,94,201">
      <TextBox.Text>
           <Binding Path="PhoneNumber"
                    NotifyOnValidationError="True"
                    UpdateSourceTrigger="PropertyChanged">
                  <!--输入验证-->
                  <Binding.ValidationRules>
                     <CheckValue:PhoneNumberCheck></CheckValue:PhoneNumberCheck>
                 </Binding.ValidationRules>
           </Binding>
       </TextBox.Text>
</TextBox></span>

OK!运行可看效果,根据所选加以改进!

wpf TextBox 验证

时间: 2024-11-05 18:38:46

wpf TextBox 验证的相关文章

【WPF】验证

<Window.Resources> <!--数据源--> <local:Person Age="100" Name="Tom" x:Key="Data"></local:Person> <!--TextBox模板--> <Style TargetType="{x:Type TextBox}"> <Style.Triggers> <!--

WPF TextBox 实现CornerRadius圆角

<Grid Background="Gray" Height="230" Width="229"> <Border CornerRadius="15" BorderBrush="White" BorderThickness="5" Margin="12,23,20,174" Background="White"> <T

WPF TextBox提示文字设定

WPF TextBox框提示文字,鼠标划入提示文字消失 <TextBox Width="248" VerticalContentAlignment="Center" BorderThickness="0" CaretBrush="White"> <TextBox.Resources> <VisualBrush x:Key="HintText" AlignmentX="

WPF TextBox 控件获取热键并转为 win32 Keys

WPF 中使用的 Key 对象与 WinForm 中的 Keys 不同,两者的按键枚举对象与物理键的映射关系有功能键上有区别,无法进行类型强制转换.使用 win api 注册热键时,需要将之转换成 win32 的键值,可以使用 KeyInterop.VirtualKeyFromKey(),另外,Keys 可以保存组合鍵,Key 则只是单个按键.Keys 的成员中有个 Modifiers,从下图可以看出 0~15位之外,是用来存放功能键的. 从两张图对比上,可以直观地发现两者的区别. 示例代码:

WPF TextBox 一些设置技巧

WPF TextBox 一些设置技巧 运行环境:Win10 x64, NetFrameWork 4.8, 作者:乌龙哈里,日期:2019-05-01 参考: 章节: 取消输入法 输入方式设定为Overwrite 限定输入字符数 一.取消输入法 TextBox txbx=new TextBox(); InputMethod.SetIsInputMethodEnabled(txbx, false);//关掉输入法 二.输入方式设定为Overwrite //把输入改成 overwrite 模式 //

WPF TextBox 正则验证 大于等于0 小于等于1 的两位小数

正则:^(0\.\d+|[1-9][0-9]|1)$ TextBox绑定正则验证 <TextBox x:Name="txb"   MaxLength="6" Margin="1 0 0 0"  Width="40" >    <TextBox.Text>        <Binding Path="Opacity" ValidatesOnExceptions="Tru

关于WPF的验证

1.ValidationRule 验证 ValidationRule:是通过ValidationRule中的的Validate方法来验证我们绑定的属性.所以我们的用法是继承ValidationRule,重写他的Validate方法.示例 public class RequiredRule : ValidationRule { public override ValidationResult Validate(object value, CultureInfo cultureInfo) { if

WPF textBox 字符串搜索,滚动到当前行

1 //执行事件 2 private void Button_Click(object sender, RoutedEventArgs e) 3 { 4 5 if (txtstr.Text == "") 6 { 7 MessageBox.Show("查询字符串为空!"); 8 return; 9 } 10 CXtxt_string(); 11 } 12 13 //执行方法 14 int index = 0;//从第0个字符串开始查找 15 public void C

WPF数据验证

当填写表单时,需要对填写的内容进行验证,检查数据是否符合要求,比如字符串的长度.日期的格式.数字等.WPF支持自定义验证规则,并提供可视化反馈,以便在输入无效值时向用户发出通知. 下面的示例将演示一个模拟员工信息录入的过程,员工的年龄为大于18的整数,工资为大于2500的数字,如果输入错误,将在文本框的后面显示一个红色的叹号,当鼠标移至错误文本框时,显示提示消息,提示用户正确的输入格式.   数据的验证 可以继承ValidationRule类,重写Validate方法,实现自定义的验证规则 下面