Как связать «дату» DatePicker в C # / Silverlight? - PullRequest
1 голос
/ 25 ноября 2011

Как правильно связать «дату» DatePicker из набора инструментов Silverlight? Я использую следующий XAML-код:

<sdk:DatePicker 
x:Name="DpDate" 
Width="200" 
Height="25" 
DisplayDate="{Binding Date, Mode=TwoWay}" />

Если я выберу дату, моя ViewModel получит изменения. Но мой View не получает начальное значение из ViewModel? Или как мне установить текущую дату?

Редактировать : привязка «TwoWay» работает с TextBox в том же View / ViewModel. Я думаю, что моя проблема в том, что я не уверен, какой атрибут я должен использовать для привязки DatePicker. Должен ли я использовать Text, DisplayDate или STH. еще?

Ответы [ 5 ]

7 голосов
/ 26 ноября 2011

Попробуйте связать с SelectedDate:

<sdk:DatePicker SelectedDate="{Binding Date,Mode=TwoWay}"/>
1 голос
/ 28 октября 2013

У меня была та же проблема, когда DatePicker был связан с SelectedDate с контекстом данных, содержащим дочерний объект со свойством даты. Элемент управления не будет отображать изменения в базовом свойстве даты. Когда я добавил метод get / setter в контекст данных для обновления даты дочернего объекта, он работал как ожидалось.

Это не сработало:

 <sdk:DatePicker x:Name="FromDate" SelectedDate="{Binding Child.TheDate, Mode=TwoWay}"

Это сработало:

 <sdk:DatePicker x:Name="FromDate" SelectedDate="{Binding TheDate, Mode=TwoWay}"

(Это мой первый день с WPF / Silverlight, поэтому я не знаю, есть ли лучший способ решить проблему.)

1 голос
/ 25 ноября 2011

Просто свяжите ваше свойство ViewModels со свойством Text DatePicker (для лучшей совместимости используйте Converter).

Также не забывайте о реализации INotifyPropertyChanged и TwoWay режима связывания

0 голосов
/ 25 ноября 2011

Чтобы передать данные из ViewModel в View, необходимо вызвать событие PropertyChanged ().

Статья MSDN о событии PropertyChanged

0 голосов
/ 25 ноября 2011

Возможно, ваша модель представления не влияет на INotifyPropertyChanged - привязка установлена, но элемент управления не знает, что свойство, с которым он связан, изменилось. Есть много (слишком много!) Примеров в Интернете о том, как реализовать INotifyPropertyChanged этот от JoshSmith в порядке.
В качестве альтернативы вы можете сделать свойство DateTime зависимым.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...