开源WPF-Samples-netframework学习(1)Data Binding——BusinessLayerValidation

案例地址:GitHub - microsoft/WPF-Samples: Repository for WPF related samples

一、运行界面

 

 

 二、案例功能描述

当输入年龄在 0~150以外时边框变红,toolTip展示错因;

知识点:

1、 ValidatesOnExceptions="True":获取或设置一个值,该值指示是否包括 System.Windows.Controls.ExceptionValidationRule。

2、DataErrorValidationRule

3、IDataErrorInfo: 提供的功能来提供用户界面可以绑定到的自定义错误信息。

三、分析代码

1、TextBox的Style,当属性Validation.HasError属性值为True时设置ToolTip的值

 <Style x:Key="TextBoxInError" TargetType="TextBox">
            <Style.Triggers>
                <Trigger Property="Validation.HasError" Value="true">
                    <Setter Property="ToolTip"
                            Value="{Binding RelativeSource={x:Static RelativeSource.Self},
                        Path=(Validation.Errors)[0].ErrorContent}"/>
                </Trigger>
            </Style.Triggers>
        </Style>

2、设置TextBox;

  <TextBox Style="{StaticResource TextBoxInError}">
            <TextBox.Text>
                <Binding Path="Age" Source="{StaticResource Data}"
                         ValidatesOnExceptions="True" <!--  获取或设置一个值,该值指示是否包括 System.Windows.Controls.ExceptionValidationRule。-->
                         UpdateSourceTrigger="PropertyChanged">
                    <Binding.ValidationRules>
                             <DataErrorValidationRule/>
                    </Binding.ValidationRules>
                </Binding>
            </TextBox.Text>
        </TextBox>

3、TextBox的Text绑定

 public class Person : IDataErrorInfo
    {
        public int Age { get; set; }
        public string Error => null;

        public string this[string name]
        {
            get
            {
                string result = null;

                if (name == "Age")
                {
                    if (Age < 0 || Age > 150)
                    {
                        result = "Age must not be less than 0 or greater than 150.";
                    }
                }
                return result;
            }
        }
    }

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值