2014-11-10 6 views
0

У меня есть datePicker, свойство Text которого я привязался к модели представления.WPF + DatePicker + UpdateSourceTrigger = Явный

Вместо того, чтобы использовать UpdateSourceTrigger как свойствоChanged, я использую Explicit. В событии KeyDown я вызываю метод binding.UpdateSource().

Проблема, с которой я столкнулся, когда я ввожу значение 30/10/1983 в текстовое поле, в модели представления, я получаю только значение 30/10/198. Я не получаю последний введенный номер, если только я не потерял фокус или табу.

В момент ввода первого значения 3 свойство модели представления получает уведомление как NULL.

Должен ли я подписаться на какое-либо другое мероприятие?

Есть ли что-то не то, что я делаю, может кто-то помочь.

Кроме того, я использую свойство string в viewmodel вместо DateTime? это правильный подход или нет?

Благодаря

+0

Что вы делаете в событии KeyDown, которое требует, чтобы вы обновили источник явно? Проблема в том, что событие KeyDown вызывается до того, как значение DatePicker обновлено, но я не могу найти никаких событий, которые возникают после. – Sjeijoet

+0

@hantoun я тоже не нахожу такого события. Мне нужен datepicker, чтобы принять ввод пользователя в виде dd/mm/yyyy. эта запись не вызывает обратную привязку к модели представления. но ввод даты в формате mm/dd/yyyy вызывает ответную запись. – Sandepku

+0

Возможно [этот вопрос] (http://stackoverflow.com/questions/3819832/changing-the-string-format-of-the-wpf-datepicker) может помочь вам найти решение, которое вы искали. Я бы попытался установить правильную «CultureInfo» вместо того, чтобы возиться со статическими форматами, если бы я был вами. В любом случае, это позволит вам привязываться к источникам DateTime. – Sjeijoet

ответ

0

Вызов binding.UpdateSource() внутри Диспетчера, чтобы сделать эту работу. Мое предположение - datePicker, обновляющее значение только после события TextChanged. Поэтому перемещение binding.UpdateSource() внутри вызова Dispatcher решит вашу проблему. http://msdn.microsoft.com/en-us/library/cc190824%28v=vs.110%29.aspx

Смежные вопросы