2013-03-15 3 views
4

У меня есть dateTimePicker. Для того, чтобы написать этот контент DateTimePicker к моей базе данных, я получаю значение с:DateTimePicker.selectedDate отличается от DateTimePicker.Text

myDateTimePicker.selectedDate.value. 

Это нормально, когда пользователь выбрал вручную дату.

Но ... когда пользователь вводит дату непосредственно в DateTimePicker, SelectedDate.value дает мне более старое значение. Хорошая стоимость, находится в собственности .Text.

Есть ли способ для синхронизации .Text с .SelectedValue.value?

Возможно, мне нужно прочитать другую собственность?

+0

Почему вы не можете использовать '.text' недвижимость? –

+0

, потому что мне нужно сохранить его в переменной DateTime! Не в цепочке! –

+0

'DateTime yourDate = (DateTime) myDateTimePicker.Text;' вы можете обойти свою проблему, просто преобразуя текст в переменную времени даты. Или используйте свойство .Value'. –

ответ

0

Вы можете использовать DateTimePicker в Расширенном WPF Toolkit.

Есть свойство Value, и когда вы начнете вводить текстовое поле этого элемента управления, введенное значение будет автоматически присвоено вашему свойству связывания.

Пример:

XAML:

<extToolkit:DateTimePicker Value="{Binding MyDate, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" /> 

, где "extToolkit" является:

xmlns:extToolkit="http://schemas.xceed.com/wpf/xaml/toolkit" 

ViewModel класс:

class MainViewModel : INotifyPropertyChanged 
{ 
    private DateTime _myDate; 

    public DateTime MyDate 
    { 
     get { return _myDate; } 
     set 
     { 
      _myDate = value; 
      OnPropertyChanged("MyDate"); 
      // only for testing... 
      Console.WriteLine("value: " + value); 
     } 
    } 

    public event PropertyChangedEventHandler PropertyChanged; 
    public void OnPropertyChanged(string name) 
    { 
     PropertyChangedEventHandler handler = PropertyChanged; 
     if (handler != null) 
     { 
      handler(this, new PropertyChangedEventArgs(name)); 
     } 
    } 
} 
1

Это происходит потому, что проверка выполняется только при контур команда теряет фокус. Обычно такие элементы управления находятся в диалоговых окнах (т. Е. ShowDialog), и диалоговое окно завершается путем активации кнопки OK (прямо или косвенно через свойство AcceptButton). Это заставляет элемент управления терять фокус и проверять себя.

Если вы используете DateTimePicker в немодальном окне, вы должны удалить фокус из него, прежде чем использовать его выбранное значение, чтобы оно выполняло проверку.

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