• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
编写人生
写写代码,写写人生
博客园    首页    新随笔    联系   管理    订阅  订阅
WPF学习笔记(数据绑定篇3)

接上回的《WPF学习笔记(数据绑定篇2)》,继续

BindValidation

此示例演示了:

  • 如何使用错误模板;
  • 使用样式显示错误信息;
  • 如何在校验发生异常时执行回调;


首先,你可以看见XAML中使用自定义的错误模板,指定错误模板的方式是:

<TextBox Name="textBox1"              Validation.ErrorTemplate="{StaticResource validationTemplate}"
             Style
="{StaticResource textBoxInError}" >
      
<TextBox.Text>
此错误模板我简单改造了一下,变得好看点:
      <ControlTemplate x:Key="validationTemplate">
        
<DockPanel>
            
<Image Source="Error.jpg" Width="16" Height="16"/>
          
<AdornedElementPlaceholder/>
        
</DockPanel>
      
</ControlTemplate>
注意这个模板是ControlTemplate(为什么是控件模板我也不知道,照葫芦画瓢),然后定义了一个布局,左边一个图像,右边一个AdornedElementPlaceholder占位符。
(我在实验时,图像如果没有加入Width和Height,在显示时图片将变得很大)。
当然,你也可以使用样式绑定到异常上来显示错误,例如:
      <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)[0].ErrorContent}"
/>
          
</Trigger>
        
</Style.Triggers>
      
</Style>
当然,例子中还显示了,如果校验时发生异常(注意:是异常不是不正确的数据),将发生回调:
          BindingExpression myBindingExpression = textBox3.GetBindingExpression(TextBox.TextProperty);
          Binding myBinding 
= myBindingExpression.ParentBinding;
          myBinding.UpdateSourceExceptionFilter 
= new UpdateSourceExceptionFilterCallback(ReturnExceptionHandler);
          myBindingExpression.UpdateSource();

当然,为什么是ParentBinding呢?需要想想看。
posted on 2007-09-30 15:54  编写人生  阅读(370)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3