WPF验证错误显示
WPF 显示验证错误的默认方式是在控件周围绘制红色边框。通常需要对此方法进行自定义,以通过其他方式来显示错误。而且,默认情况下不会显示与验证错误关联的错误消息。常见的要求是仅当存在验证错误时才在工具提示中显示错误消息。通过将 Styles 和一组与验证关联的附加属性进行组合,可以相当轻松地自定义验证错误显示。
添加显示错误文本的工具提示非常简单。只需定义一个应用于输入控件的 Style,每当存在验证错误时,它便将该控件上的 ToolTip 属性设置为验证错误文本。若要对此提供支持,需要使用两个附加属性:Validation.HasError 和 Validation.Errors。下面演示了一个针对 TextBox 类型并设置工具提示的 Style:
1 <Style TargetType="TextBox"> 2 <Style.Triggers> 3 <Trigger Property="Validation.HasError" 4 Value="True"> 5 <Setter Property="ToolTip"> 6 <Setter.Value> 7 <Binding 8 Path="(Validation.Errors).CurrentItem.ErrorContent" 9 RelativeSource="{x:Static RelativeSource.Self}" /> 10 </Setter.Value> 11 </Setter> 12 </Trigger> 13 </Style.Triggers> 14 </Style>
您可以看到,Style 只包含 Validation.HasError 附加属性的属性触发器。当 Binding 更新其源对象属性且验证机制生成错误时,HasError 属性会设置为 true。这种情况可能源自异常、ValidationRule 或 IDataErrorInfo 调用。该 Style 随后使用 Validation.Errors 附加属性,该属性会在存在验证错误时包含一个错误字符串集合。可以使用该集合类型的 CurrentItem 属性来仅获取集合中的第一个字符串。也可以设计为将数据绑定到集合,并为面向列表的控件中的每一项显示 ErrorContent 属性。
若要将控件的默认验证错误显示更改为红色边框之外的内容,需要将 Validation.ErrorTemplate 附加属性设置为要自定义的控件上的新模板。在示例应用程序中,将在存在错误的每个控件右侧显示一个小的红色渐变圆形,而不是显示红色边框。为此,可定义用作 ErrorTemplate 的控件模板。
1 <ControlTemplate x:Key="InputErrorTemplate"> 2 <DockPanel> 3 <Ellipse DockPanel.Dock="Right" Margin="2,0" 4 ToolTip="Contains invalid data" 5 Width="10" Height="10"> 6 <Ellipse.Fill> 7 <LinearGradientBrush> 8 <GradientStop Color="#11FF1111" Offset="0" /> 9 <GradientStop Color="#FFFF0000" Offset="1" /> 10 </LinearGradientBrush> 11 </Ellipse.Fill> 12 </Ellipse> 13 <AdornedElementPlaceholder /> 14 </DockPanel> 15 </ControlTemplate>
若要将该控件模板挂接到某个控件,只需设置该控件的 Validation.ErrorTemplate 属性,您可以通过 Style 再次执行此操作:
1 <Style TargetType="TextBox"> 2 <Setter Property="Validation.ErrorTemplate" 3 Value="{StaticResource InputErrorTemplate}" /> 4 ... 5 </Style>
出处:http://sirkevin.cnblogs.com
GitHub:https://github.com/backslash112
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
posted on 2012-07-25 23:33 backslash112 阅读(5448) 评论(0) 编辑 收藏 举报