У меня есть DateTimePicker следующим образом:Validate неверный ввод на 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)
Что вы подразумеваете под «Пюре с клавиатурой»? – gleng
Я уверен, что он означает нажимая кучу случайных букв. Я попробовал его в проекте WPF со стандартным элементом управления DatePicker, и дата сбрасывается на все, что было в данный момент в элементе управления. Является ли 'xctk: DateTimePicker' настраиваемый элемент управления? –
Извините, да, я имею в виду набирать случайные символы; управление происходит отсюда: https://wpftoolkit.codeplex.com/wikipage?title=DateTimePicker&referringTitle=Documentation –