Команды здесь будут представлять собой разновидность RelayCommand Джоша Смита (я называю мою VmCommand), и вопрос заключается в том, как ваша ViewModel создает их. Мне известны два основных метода, первый из которых заключается в том, что вы устанавливаете все свойства команды внутри конструктора, а второй - в том, что вы лениво создаете экземпляр команды внутри метода получения свойства.
Я предпочитаю последний вариант, так как считаю, что он позволяет более упорядочить код, так как я обычно обертываю все поведение, связанное с данной функцией, в своем регионе, как показано ниже для команды SaveCommand.
Как вам нравится настраивать ваши команды?
Приветствия
Berryl
#region Saving
public ICommand SaveCommand
{
get
{
return _saveCommand ?? (_saveCommand = new VmCommand
{
CanExecuteDelegate = x => CanSave(),
ExecuteDelegate = x => Save()
});
}
}
private ICommand _saveCommand;
private bool CanSave() { return IsDirty; }
public void Save()
{
_facade.Save();
}
#endregion