案例地址: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;
}
}
}