binding是wpf的核心,而資料的轉換與校驗是與binding配套的,其重要性不言而喻,前面介紹了wpf的binding,現在來看下converter&validation。本文目標是以簡單的demo展示converter&validation的用法。
binding用於資料有效性校驗的是binding的validationrules屬性,用於資料型別轉換的是binding的converter屬性。
當source端path所關聯的資料與target目標屬性資料型別不一致是,我們可以新增資料轉換器。給出乙個demo。
首先在xaml介面中定義乙個grid。
"下面自定義乙個datatable物件,作為grid的資料來源。txtmsg
" text="
" foreground="
red" fontweight="
bold
" margin="
34,12,161,280
" />
"false
" margin="
34,48,44,21
" name="
datagrid1
" datacontext="
">
"id" width="
*" isreadonly="
true
">
"16" text="
" background="
}"/>
"name
" width="
2*" isreadonly="
true
">
"txtbox
" validation.errortemplate="
" validation.error="
txtbox_error
" >
"name
" notifyonvalidationerror="
true
" >
"true
" />
"age
" width="
*" isreadonly="
true
">
""/>
usingbinding如下:system.data;
namespace
converterandvalidation
; dt.rows.add(dr);
}return
dt; }}}
datatable dt =classdata.getdatatable();為了進行轉換需要實現ivalueconverter介面datagrid1.itemssource = dt.defaultview;
。
using如何消費這個idconverter呢?system;
using
system.windows.data;
using
system.windows.media;
namespace
converterandvalidation
public
object convertback(object value, type targettype, object
parameter, system.globalization.cultureinfo culture)
#endregion
}}
新增乙個xmlns
xmlns:local="新增window.resources資源clr-namespace:converterandvalidation
"
"在binding處idconverter1
"/>
"下面同樣以這個例子,寫資料校驗的demo。16" text="
" background="
}"/>
為了進行校驗,需要準備乙個抽象類validationrule的派生類。
using如何消費這個validation?在window.resources中新增system.windows.controls;
namespace
converterandvalidation
return
new validationresult(false, "
error name,validation failed.");}}
}
"namevalidationrule1
"/>
"binding部分errortemplate
">
"red">invalid value!!!
"txtbox_error如下txtbox
" validation.errortemplate="
" validation.error="
txtbox_error
" >
"name
" notifyonvalidationerror="
true
" >
"true
" />
private程式的執行結果如下:void txtbox_error(object
sender, validationerroreventargs e)
else
//no error
}
附:程式完整的xaml如下:
"converterandvalidation.mainwindow
"xmlns="
"xmlns:x="
"xmlns:local="
clr-namespace:converterandvalidation
"title="
mainwindow
" height="
350" width="
525">
"idconverter1
"/>
"namevalidationrule1
"/>
"errortemplate
">
"red">invalid value!!!
"txtmsg
" text="
" foreground="
red" fontweight="
bold
" margin="
34,12,161,280
" />
"false
" margin="
34,48,44,21
" name="
datagrid1
" datacontext="
">
"id" width="
*" isreadonly="
true
">
"16" text="
" background="
}"/>
"name
" width="
2*" isreadonly="
true
">
"txtbox
" validation.errortemplate="
" validation.error="
txtbox_error
" >
"name
" notifyonvalidationerror="
true
" >
"true
" />
"age
" width="
*" isreadonly="
true
">
""/>
IFS日期校驗與數字校驗
在ifs 後台有時從外部匯入資料,直接資料oracle報錯資訊可讀性較差,現改進校驗過程,如下 procedure validate date value in varchar2,format in varchar2 is tmp date date begin tmp date to date v...
資料校驗validator 與 DWZ
在做系統時經常會用到資料校驗,資料校驗可以自己寫,也可以用現在成的,現在記錄下兩種類庫使用方法,validator 用data rule設定資料校驗的格式,如要加新的校驗型別只要在 zh cn.js檔案中新增正規表示式即可。如下 部分 rules 0 9 請輸入數字 positiveinteger ...
CRC校驗與RARP協議
crc cyclic redundancy check 迴圈冗餘檢驗。crc校驗 廣泛應用於資料鏈路層的差錯檢驗技術,保證資料傳輸的可靠性。crc校驗原理 傳送端 傳送資料 m 101001 冗餘碼即幀檢驗序列 fcs 的獲得 1 在crc演算法中,除數有乙個專有名稱叫做生成多項式。多項式p x x...