您的位置:首页 > 其它

WPF数据绑定

2015-09-24 09:30 357 查看

数据绑定

DependencyObject 和 绑定源属性的绑定:



UpdateSourceTrigger 枚举值:

PropertyChanged : 目标属性发生改变时候立即更新源

LostFocus : 目标属性发生变化并且失去焦点

Explicit:调用BindingExpressiong.UpdateSource(),否则无法更新

Default:根据目标属性的元数据确定更新行为

OneWay和OneTime

OneWay : 数据源改变自动影响目标依赖属性,数据源不再改变。

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

数据验证

数据验证一般有四种方式如图:



响应验证错误

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

Validation.HasError为True.

创建ValidationError对象,作为ValidationRule.Validate()的返回值.添加到 Validation.Errors集合中

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>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  wpf