WPFBinding转换与校验.docx

上传人:b****9 文档编号:25395458 上传时间:2023-06-08 格式:DOCX 页数:11 大小:35.96KB
下载 相关 举报
WPFBinding转换与校验.docx_第1页
第1页 / 共11页
WPFBinding转换与校验.docx_第2页
第2页 / 共11页
WPFBinding转换与校验.docx_第3页
第3页 / 共11页
WPFBinding转换与校验.docx_第4页
第4页 / 共11页
WPFBinding转换与校验.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

WPFBinding转换与校验.docx

《WPFBinding转换与校验.docx》由会员分享,可在线阅读,更多相关《WPFBinding转换与校验.docx(11页珍藏版)》请在冰豆网上搜索。

WPFBinding转换与校验.docx

WPFBinding转换与校验

WPFBinding转换与校验

Binding是WPF的核心,而数据的转换与校验是与Binding配套的,其重要性不言而喻,前面介绍了WPF的Binding,现在来看下Converter&Validation。

本文目标是以简单的Demo展示Converter&Validation的用法。

Binding用于数据有效性校验的是Binding的ValidationRules属性,用于数据类型转换的是Binding的Converter属性。

当Source端Path所关联的数据与Target目标属性数据类型不一致是,我们可以添加数据转换器。

给出一个Demo。

首先在xaml界面中定义一个Grid。

Name="txtMsg"Text="{BindingElementName=txtBox,Path=(Validation.Errors)[0].ErrorContent}"Foreground="Red"FontWeight="Bold"Margin="34,12,161,280"/>

---->

Name="txtBox"Validation.ErrorTemplate="{StaticResourceerrorTemplate}"Validation.Error="txtBox_Error">

NameValidationRuleValidatesOnTargetUpdated="True"/>

下面自定义一个DataTable对象,作为Grid的数据源。

usingSystem.Data;

namespaceConverterAndValidation

{

publicclassClassData

{

///

///手动创建一个DataTable

///

///

publicstaticDataTableGetDataTable()

{

DataTabledt=newDataTable();

dt.Columns.Add("Id");

dt.Columns.Add("Name");

dt.Columns.Add("Age");

//

for(inti=1;i<=10;i++)

{

DataRowdr=dt.NewRow();

dr.ItemArray=newobject[]{i,"DebugLZQ"+i,25+i};

dt.Rows.Add(dr);

}

returndt;

}

}

}

Binding如下:

DataTabledt=ClassData.GetDataTable();

dataGrid1.ItemsSource=dt.DefaultView;

为了进行转换需要实现IValueConverter接口。

usingSystem;

usingSystem.Windows.Data;

usingSystem.Windows.Media;

namespaceConverterAndValidation

{

classIdConverter:

IValueConverter

{

#regionIValueConverter成员

publicobjectConvert(objectvalue,TypetargetType,objectparameter,System.Globalization.CultureInfoculture)

{

intid=int.Parse(value.ToString());

if(id==1)

returnnewSolidColorBrush(Colors.Silver);

if(id==2)

returnnewSolidColorBrush(Colors.Teal);

else

returnnewSolidColorBrush(Colors.Gold);

}

publicobjectConvertBack(objectvalue,TypetargetType,objectparameter,System.Globalization.CultureInfoculture)

{

thrownewNotImplementedException();

}

#endregion

}

}

如何消费这个IdConverter呢?

添加一个xmlns

xmlns:

local="clr-namespace:

ConverterAndValidation"

添加Window.Resources资源

IdConverterx:

Key="IdConverter1"/>

在Binding处

下面同样以这个例子,写数据校验的Demo。

 为了进行校验,需要准备一个抽象类ValidationRule的派生类。

usingSystem.Windows.Controls;

namespaceConverterAndValidation

{

classNameValidationRule:

ValidationRule

{

publicoverrideValidationResultValidate(objectvalue,System.Globalization.CultureInfocultureInfo)

{

stringname=value.ToString();

if(name!

="DebugLZQ5")

{

returnnewValidationResult(true,null);

}

returnnewValidationResult(false,"ErrorName,ValidationFailed.");

}

}

}

如何消费这个Validation?

在Window.Resources中添加

NameValidationRulex:

Key="NameValidationRule1"/>

Key="errorTemplate">

--

InvalidValue!

!

!

-->

InvalidValue!

!

!

Binding部分

Name="txtBox"Validation.ErrorTemplate="{StaticResourceerrorTemplate}"Validation.Error="txtBox_Error">

NameValidationRuleValidatesOnTargetUpdated="True"/>

txtBox_Error如下

privatevoidtxtBox_Error(objectsender,ValidationErrorEventArgse)

{

if(e.Action==ValidationErrorEventAction.Added)//ValidationErrorOccurred

{

txtMsg.Text=e.Error.ErrorContent.ToString();

}

else//NoError

{

txtMsg.Text="";

}

}

程序的运行结果如下:

 附:

程序完整的xaml如下:

Class="ConverterAndValidation.MainWindow"

xmlns="

xmlns:

x="

xmlns:

local="clr-namespace:

ConverterAndValidation"

Title="MainWindow"Height="350"Width="525">

IdConverterx:

Key="IdConverter1"/>

NameValidationRulex:

Key="NameValidationRule1"/>

Key="errorTemplate">

--

InvalidValue!

!

!

-->

InvalidValue!

!

!

Name="txtMsg"Text="{BindingElementName=txtBox,Path=(Validation.Errors)[0].ErrorContent}"Foreground="Red"FontWeight="Bold"Margin="34,12,161,280"/>

---->

Name="txtBox"Validation.ErrorTemplate="{StaticResourceerrorTemplate}"Validation.Error="txtBox_Error">

NameValidationRuleValidatesOnTargetUpdated="True"/>

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生 > 药学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1