Что на самом деле происходит при выполнении ApplicationCommands.Close - PullRequest
4 голосов
/ 03 января 2011

Полагаю, вопрос в названии достаточно ясен. Что происходит, когда я звоню

ApplicationCommands.Close.Execute(null,null)

из моего класса Viewmodel.

У меня есть modeldialog, который показывает usercontrol. У меня есть привязка команды к кнопке в usercontrol, которая выполняется в viewmodel. Я хочу закрыть диалог после выполнения команды. Это можно сделать с помощью приведенной выше команды до конца выполненного события.

Но мне интересно, если это правильный подход. Это приведет к нежелательному эффекту?

1 Ответ

3 голосов
/ 16 февраля 2011

К сожалению, это не сработает.

ApplicationCommands.Close - это RoutedUiEvent, для которого требуется Commandtarget (любой IInputelement).Эта целевая команда используется для вызова routedevent.

Затем вы можете обработать этот routedevent с помощью привязки команд.

Из ViewModel вы можете связать ApplicationCommands.Close to Close Button, а затем обработать перенаправленнуюсобытие закрытия в вашем окне.

Однако вы не можете вызвать ApplicationCommands.Close.Execute(null,null) в вашей ViewModel после выполнения другой команды, так как у вас нет CommandTarget (второй ноль)

Существуют и другие потоки, такие какэтот Как ViewModel должен закрывать форму? , который детализирует различные методы для достижения этой цели.

http://adammills.wordpress.com/2011/02/16/mvvm-uses-for-applicationcommands-close/

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