验证DateTimePicker上的无效输入

时间:2013-11-13 14:15:09

标签: c# wpf xaml datetimepicker xceed

我有一个DateTimePicker,如下所示:

<UserControl
...
xmlns:xctk="http://schemas.xceed.com/wpf/xaml/toolkit"
...
>
     <xctk:DateTimePicker Name="MyDatePicker" 
           Value="{Binding MyDate, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged, ValidatesOnDataErrors=True}" 
           Format="Custom" FormatString="dd/MM/yyyy HH:mm:ss"                
           AutoCloseCalendar="True"/>

我在我的数据模型上使用IDateErrorInfo来处理业务逻辑错误;例如:

public class MyViewModel : IDataErrorInfo
{
    public string Error
    {
        get { return null; }
    }

    public string this[string columnName]
    {
        get
        {                
            string error = DataValid();
            CanExecute = (error == string.Empty);

            return error;
        }
    }

CanExecute是管理用户是否可以选择提交数据的属性。这一切都运行良好,但是,如果我只选择日期并混合键盘(键入随机字母),日期将重置为01/01/01。我想要发生的是日期有效地保持不变(也就是说,就像我捣碎键盘之前一样)。但是,我似乎无法找到一个处理铸造错误的地方,当发生这种情况时,这显然会发生。

我怎么能陷阱?

(DateTimePicker控件是WPF Extension Kit

的一部分

1 个答案:

答案 0 :(得分:0)

如果您不喜欢控件处理错误的方式,您可以在子类中自己处理错误,在我的旧问题Wpf Datepicker Input modification

中就是一个例子