У меня есть следующий сценарий:Вызов метода в ViewModel без команды
public class MyCommand : ICommand
{
MyViewModel _viewModel;
public MyCommand(MyViewModel viewModel)
{
_viewModel = viewModel;
}
public bool CanExecute(object parameter)
{
return true;
}
public event EventHandler CanExecuteChanged;
public void Execute(object parameter)
{
_viewModel.SomeMethod();
}
}
По существу, эта команда будет просто вызывать метод в моем ViewModel, когда кнопка нажата. CanExecute всегда возвращает true.
Проблема в том, что, хотя это, как правило, считается лучшим способом делать вещи, оно не очень элегантно. Он задает вопрос о том, зачем мне нужна команда для выполнения этого очень простого процесса.
Почему я не могу просто пропустить команду и вызвать метод напрямую?
У меня было думать об этом, и единственный способ, которым я могу видеть, чтобы достичь этого было бы создать команду, где я могу указать имя метода, который я хочу, чтобы позвонить в CommandParameter собственности на моя кнопка.
Я надеюсь, что кто-то еще может предложить элегантное решение этой проблемы.
1) Это не считается лучшим способом делать вещи 2) вы можете вызвать метод непосредственно, но вы должны прыгать через обручи идиотов в пользовательском интерфейсе, чтобы сделать это, что есть дороже, чем использование схемы ICommand. – Will
Вы также разделяете логику между двумя частями, то есть 'View' и' ViewModel', если кто-нибудь придет и сохранит этот код, им придется искать в 2-х местах, а не в одном, т. Е. 'ViewModel'. – XAMlMAX