DevExpress WPF使用技巧教程:如何實現自定義DateEdit并自動更正值
下載DevExpress v20.1完整版 DevExpress v20.1漢化資源獲取
通過DevExpress WPF Controls,您能創建有著強大互動功能的XAML基礎應用程序,這些應用程序專注于當代客戶的需求和構建未來新一代支持觸摸的解決方案。
遇到的問題
使用DateEdit控件時,該控件由于掩碼"autocorrects"用戶輸入的值,因此如果用戶輸入2020-04-31,他將獲得2020-04-01。這種情況下,用戶可能會以外輸入不正確的日期,并且沒有任何警告可通知給用戶,他將繼續執行不正確的日期。最好讓用戶輸入無效日期并在編輯器上顯示驗證錯誤,編輯器應保持其格式,光標應與原始DateEdit控件一樣,從日期的一部分跳到另一部分。 唯一的不同是能夠輸入與格式相對應的無效日期并獲得驗證錯誤,這該如何實現?
解決方案:
DateEdit是帶有DateTime類型掩碼的文本編輯器,該掩碼不允許輸入錯誤的日期,這會導致如上所述的行為操作。
為了實現目標,可以使用掩碼創建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,建議使用屬性。
PopupBaseEdit彈出窗口中使用的DateEditCalendar使用DateTime類型,而PopupBaseEdit的EditValue包含一個String,因此綁定該值時,需要創建一個自定義Converter。請注意,需要將適當的日期格式傳遞給轉換器。 例如,可以通過ConverterParameter執行此操作。
DevExpress技術交流群2:775869749 歡迎一起進群討論