В сообществе Silverlight предпринимается много усилий, чтобы сохранить код XAML в файле как можно свободнее от кода.Какова реальная мотивация этого?
Я бы сказал, что люди, которые хотят, чтобы код был «как можно более свободен от кода», - это те, кто запрыгнул на MVVM, не осознавая сути.(Либо это, либо вы неверно истолковали их точку зрения.)
Смысл заключается не в том, чтобы не допускать выделение кода, а в том, чтобы представление отвечало только за визуальное представление.Тот факт, что многие визуальные аспекты могут быть определены декларативно, означает, что в программном коде меньше кода, но это не означает, что вам следует без колебаний писать программный код там, где вы чувствуете, что это необходимо, и не выходить за пределы обязанностей представления.
В чем преимущество использования команды вместо обработчика событий?
Команда предлагает как минимум две возможности, которых нет у обработчика событий.Некоторые элементы управления WPF знают о свойстве CanExecute команды, поэтому, например, кнопка может быть отключена, когда команда недоступна для выполнения.Кроме того, конструктор и инфраструктура привязки поддерживают команды.
Если вы просто хотите вызвать метод при нажатии кнопки, то нет большое преимущество использования команд вместопросто вызов метода из обработчика событий.Так что не бойтесь использовать этот подход.(Третий подход, который предпочитает дизайнера программисту, заключается в использовании CallMethodAction из Blend 4).