WPF数据绑定

数据绑定

DependencyObject 和 绑定源属性的绑定:

这里写图片描述

UpdateSourceTrigger 枚举值:

  1. PropertyChanged : 目标属性发生改变时候立即更新源
  2. LostFocus : 目标属性发生变化并且失去焦点
  3. Explicit:调用BindingExpressiong.UpdateSource(),否则无法更新
  4. Default:根据目标属性的元数据确定更新行为

OneWay和OneTime
OneWay : 数据源改变自动影响目标依赖属性,数据源不再改变。
OneTime : 第一次改变数据源会改变目标依赖属性,以后改变对目标依赖属性没有影响。

数据验证

数据验证一般有四种方式如图:
这里写图片描述

响应验证错误

System.Windows.Controls.Validation的附加属性记录验证错误,当验证不成功时:

  1. Validation.HasError为True.
  2. 创建ValidationError对象,作为ValidationRule.Validate()的返回值.添加到 Validation.Errors集合中
  3. Validation.Error被引发(前提:Binding.NotifyOnValidationError=True).
1. 错误列表显示错误信息

捕获窗体所有未处理的异常:遍历元素树(LogicalTreeHelper.GetChildren(obj)),如果Validation.HasError(element),则获取所有错误Validation.GetErrors(element).

2. 自定义错误模板

提高用户体验可以自定义:Validation.ErrorTemplate.

 <DataGrid.RowValidationErrorTemplate>
                <ControlTemplate>
                    <Grid
                          ToolTip="{Binding RelativeSource={RelativeSource
            FindAncestor, AncestorType={x:Type DataGridRow}},
            Path=(Validation.Errors)[0].ErrorContent}">
                        <Ellipse StrokeThickness="0"
                                 Fill="Red"
                                 Width="{TemplateBinding FontSize}"
                                 Height="{TemplateBinding FontSize}" />
                        <TextBlock Text="!"
                                   FontSize="{TemplateBinding FontSize}"
                                   FontWeight="Bold"
                                   Foreground="White"
                                   HorizontalAlignment="Center" />
                        <AdornedElementPlaceholder />
                    </Grid>
                </ControlTemplate>
            </DataGrid.RowValidationErrorTemplate>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值