2012-05-08 2 views
3

У меня есть следующее определение для DatePicker:Дата выбор Silverlight SDK не сбросить выбранную дату на сегодня

<sdk:DatePicker x:Name="dtpStartDate" 
       Grid.Row="4" 
       Grid.Column="1" 
       SelectedDateFormat="Short" 
       SelectedDate="{Binding MyObject.StartDate, Mode=TwoWay, NotifyOnValidationError=True}"/> 

MyObject является классом, который содержит StartDate, который определяется как обнуляемый DateTime.

class MyObjectClass 
{ 
    .... 
    public DateTime? StartDate { get; set; } 
    .... 
} 

Я использую MVVM (через призму) и MyObject правильно связаны.

В первый раз, когда я показываю это представление, дата пуста (как и ожидалось), и когда я нажимаю на сборщик, календарь отображается с выделенной сегодняшней датой.

Если я выбрать дату (другой, чем сегодня) или отобразить запись с датой заполненной тогда, когда я пустая форма, чтобы создать новый объект:

this.MyObject = new MyObjectClass(); 

дата, выделенную при нажатии на селекторе это выбранная ранее дата.

Итак, если запись показала «1 мая 2009 года», это будет выделено в сборщике. Я могу установить StartDate на DateTime.Today, который отображается правильно, но означает, что дата отображается в том виде, который я не хочу.

Итак, почему не устанавливает дату нулевого сброса выбранной даты в сборщике на сегодняшний день?

ответ

1

Раствор для сброса DisplayDate собственности на DatePicker:

 this.SelectedDateChanged += (s, e) => 
     { 
      if (this.SelectedDate == null) 
      { 
       this.DisplayDate = DateTime.Today; 
       this.Text = string.Empty; 
      } 
     }; 

Чтобы добавить эту функцию, мы должны были наследоваться DataPicker хотя.

0

Не уверен, что вы просто отказались от этого вопроса, но если вы хотите, чтобы изменения в программе отображались в пользовательском интерфейсе, ваш ViewModel и MyObjectClass должны реализовывать INotifyPropertyChanged. В частности, свойство MyObject VM и средства определения свойств MyObjectClass StartDate должны запускать событие PropertyChanged.

+0

Да, я просто ушел. Все реализует 'INotifyPropertyChanged'. Как я уже сказал, установка даты начала для 'Today' обновляет ее правильно. – ChrisF

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