Предоставление обратного вызова для DelegateCommand? - PullRequest
0 голосов
/ 21 мая 2011

В моем приложении Silverlight у меня есть кнопка, связанная с ICommand, который отправляет некоторые данные в веб-сервис.

После завершения я бы хотел, чтобы Command вызвалобратный вызов в представление, позволяющее представлению узнать, что конкретный Command завершен (я хочу, чтобы представление закрылось).

Есть ли способ передать действие обратного вызова в DelegateCommand?

Как еще я могу уведомить View, что ViewModel завершил?

Ответы [ 2 ]

1 голос
/ 23 мая 2011

Любое сообщение от ViewModel к представлению должно осуществляться, IMHO, через обмен сообщениями (что является своего рода механизмом «слабо связанных событий»). Поэтому я думаю, что хороший способ сделать это - просто отправить сообщение (вы можете использовать класс Messenger из MVVM Light ) из вашей ViewModel в представление, которое закроется само по себе. Обратного звонка не требуется.

Надеюсь, это поможет;)

1 голос
/ 22 мая 2011

Вы можете использовать несколько различных способов для достижения этой цели. Один из них заключается в том, чтобы внедрить конкретную службу представления, которая будет выполнять операции на уровне интерфейса пользователя. Модель представления вызовет определенный метод для внедренного сервиса. Один такой экзамен демонстрируется здесь .

Если вы не хотите внедрять определенные сервисы вида в модель представления, вы можете выставить событие в модели представления, например CloseWindow. Это событие должно быть подписано в вашем файле view.xaml.cs, а из метода обработчика событий вы можете закрыть страницу просмотра.

Надеюсь, это поможет.

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