Как выполнить команду, когда пользователь открывает календарь DatePicker в WPF? - PullRequest
0 голосов
/ 23 февраля 2012

Я использую DatePicker в окне WPF, и мне нужно выполнить команду для обновления данных MVVM, когда пользователь пытается открыть окно календаря. DatePicker не имеет свойства Command.

Есть ли способ сделать это?

Спасибо.

Ответы [ 2 ]

1 голос
/ 23 февраля 2012

ОК, если вы действительно хотите присоединить команду к событию, вы можете использовать шаблон, подобный этому: http://petebarber.blogspot.com/2011/06/getting-wpf-sizechanged-events-at-start.html

В основном вы определяете (в отдельном файле) присоединенное свойство, которое перехватываетдо события.Так что в вашем случае это будет событие CalendarOpened объекта DatePicker.Таким образом, присоединенное свойство будет называться CalendarOpenedCommand, и вы затем будете использовать это свойство в фактическом DatePicker следующим образом:

<DatePicker mvvm:CalendarOpenedCommand="{Binding MyCalendarOpenedCommand}" ...

Однако я лично считаю, что это излишне, если это единственное место, где вы будете использовать эту функцию,Это могло бы расстроить некоторых пуристов MVVM, но в этом случае я бы просто поместил однострочный обработчик событий для CalendarOpened в коде, который затем мог бы вызвать метод (или даже команду, если вы предпочитаете) в модели представления, чтобы уведомить его ооткрытие календаря.Затем он может делать свое дело и обновлять связанные свойства для DisplayDateStart и DisplayDateEnd (как я предлагал в комментариях выше) соответственно.

1 голос
/ 23 февраля 2012

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

Также этот вопрос действительно относится к этим видам вопросов.

...