wpf 4.0的datepicker在通過鍵盤錄入日期的時候是非常讓人鬱悶的。必須按照日期的格式來完整輸入
例如,比如輸入「2010/10/10」才能識別。而實際上在一些要求快速錄入的場合,使用者更希望直接敲20101010就行了。
遺憾的是,datepicker沒有乙個屬性可以設定說錄入的格式是yyyymmdd這種的。
實際上,仔細看一下datepicker控制項,它有乙個datevalidationerror事件,當輸入的文字無法識別為日期時,就會觸發該事件。我們可以利用這個事件來做一些事情。
為了方便使用,我們可以封裝乙個附加屬性,在需要快速錄入的地方attach一下就好了。
public static readonly dependencyproperty enablefastinputproperty =
dependencyproperty.registerattached("enablefastinput", typeof(bool), typeof(datepickerhelper),
new frameworkpropertymetadata((bool)false,
new propertychangedcallback(onenablefastinputchanged)));
public static bool getenablefastinput(dependencyobject d)
public static void setenablefastinput(dependencyobject d, bool value)
這樣,我們就給乙個datepickerhelper型別註冊了乙個附加屬性,叫做enablefastinput。
在這個屬性的propertychanged事件處理函式中,我們監聽datepicker的datevalidationerror事件
private static void onenablefastinputchanged(dependencyobject d, dependencypropertychangedeventargs e)
else}}
在事件處理中,我們嘗試著解析文字,並且設定日期:
private static void datepickerondatevalidationerror(object sender, datepickerdatevalidationerroreventargs e)}}
在xaml中使用時:
這樣,datepicker就支援直接輸入yyyymmdd格式的日期了。
當然,這裡的日期格式是寫死的,可以考慮封裝成另外乙個datepickerhelper.inputdateformat屬性之類的,更加靈活
【效果圖】
原文(有原始碼):
WPF 4 0 DatePicker 快速錄入
原文 wpf 4.0 datepicker 快速錄入 wpf 4.0的datepicker在通過鍵盤錄入日期的時候是非常讓人鬱悶的。必須按照日期的格式來完整輸入 例如,比如輸入 2010 10 10 才能識別。而實際上在一些要求快速錄入的場合,使用者更希望直接敲20101010就行了。遺憾的是,da...
快逸報表4 0 分組處理
b 右側作為上級分組的處理 b 快逸報表分組顯示時預設都是從左向右分級分組。比如從左向右a,b,c,d4列。a列為國家,b列為省,c列為市,d列為區。則可以對查詢出的資料直接使用分組函式 ds1.group a ds1.group b ds1.group c ds1.select d 注意這裡d列有...
劍指 Offer 40 最小的k個數 快排 堆
劍指 offer 40.最小的k個數 輸入整數陣列 arr 找出其中最小的 k 個數。例如,輸入4 5 1 6 2 7 3 8這8個數字,則最小的4個數字是1 2 3 4。示例 1 輸入 arr 3,2,1 k 2 輸出 1,2 或者 2,1 示例 2 輸入 arr 0,1,2,1 k 1 輸出 0...