Стили настройки команды mvvm - PullRequest
0 голосов
/ 24 февраля 2010

Команды здесь будут представлять собой разновидность 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

1 Ответ

1 голос
/ 24 февраля 2010

Это то, что я делаю ... однако, когда IsDirty меняется, не ожидайте, что ваши кнопки автоматически активируются.

Вы должны будете указать своей команде, чтобы она запускала CanExecuteChanged и call CommandManager.InvalidateRequerySuggested , иначе вы обнаружите, что ваши кнопки не всегда реагируют на изменения в банке выполнить "статус команды.

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