DevExpress WPF使用技巧教程:如何實(shí)現(xiàn)自定義DateEdit并自動更正值
下載DevExpress v20.1完整版 DevExpress v20.1漢化資源獲取
通過DevExpress WPF Controls,您能創(chuàng)建有著強(qiáng)大互動功能的XAML基礎(chǔ)應(yīng)用程序,這些應(yīng)用程序?qū)W⒂诋?dāng)代客戶的需求和構(gòu)建未來新一代支持觸摸的解決方案。
遇到的問題
使用DateEdit控件時,該控件由于掩碼"autocorrects"用戶輸入的值,因此如果用戶輸入2020-04-31,他將獲得2020-04-01。這種情況下,用戶可能會以外輸入不正確的日期,并且沒有任何警告可通知給用戶,他將繼續(xù)執(zhí)行不正確的日期。最好讓用戶輸入無效日期并在編輯器上顯示驗(yàn)證錯誤,編輯器應(yīng)保持其格式,光標(biāo)應(yīng)與原始DateEdit控件一樣,從日期的一部分跳到另一部分。 唯一的不同是能夠輸入與格式相對應(yīng)的無效日期并獲得驗(yàn)證錯誤,這該如何實(shí)現(xiàn)?
解決方案:
DateEdit是帶有DateTime類型掩碼的文本編輯器,該掩碼不允許輸入錯誤的日期,這會導(dǎo)致如上所述的行為操作。
為了實(shí)現(xiàn)目標(biāo),可以使用掩碼創(chuàng)建PopupBaseEdit:
<dxe:PopupBaseEdit Mask="\d{4}-\d{2}-\d{2}" MaskType="RegEx" Validate="DateEdit_Validate"...> <dxe:PopupBaseEdit.PopupContentTemplate> ... </dxe:PopupBaseEdit.PopupContentTemplate> </dxe:PopupBaseEdit>
若要使PopupBaseEdit看起來像DateEdit,建議使用PopupContentTemplate屬性。
PopupBaseEdit彈出窗口中使用的DateEditCalendar使用DateTime類型,而PopupBaseEdit的EditValue包含一個String,因此綁定該值時,需要創(chuàng)建一個自定義Converter。請注意,需要將適當(dāng)?shù)娜掌诟袷絺鬟f給轉(zhuǎn)換器。 例如,可以通過ConverterParameter執(zhí)行此操作。
DevExpress技術(shù)交流群2:775869749 歡迎一起進(jìn)群討論