Как включить кнопку с ее методом CanExecute

Я разрабатываю приложение в WPF с использованием MVVM, но я застрял с объектами ICommand.

У меня есть окна, которые содержат несколько кнопок, поэтому я привязываю их к соответствующим командам ICommand в XAML, как показано ниже:

<Button Command="{Binding DoSomethingCommand}" Content="Do Something" />

Затем в моем классе модели представления я написал следующее:

public class MyViewModel : ObservableObject
{

    private bool isDoSomethingButtonEnabled = false;
    ....        
    public ICommand DoSomethingCommand
    {
        get;
        private set;
    }
    ....
    ....
    public MyViewModel()
    {
        DoSomethingCommand = new DelegateCommand<String>(this.OnDoSomething, this.CanDoSomething);
    }

    private void OnDoSomething(String arg)
    {

    }

    private bool CanDoSomething(String arg)
    {
        return isDoSomethingButtonEnabled;
    }
    ....
}

Итак, поскольку я нужно, чтобы моя кнопка не была включена при первом открытии окна, я установил для своей переменной isDoSomethingButtonEnabledзначение false. И это работает, кнопка отключена в начале, но моя проблема в том, что когда я изменяю переменную isDoSomethingButtonEnabledна trueво время выполнения, моя кнопка все еще отключена.

Я даже провел несколько тестов после изменения переменной isDoSomethingButtonEnabledна true, распечатав результат DoSomethingCommand.CanExecute(), и он показывает «true» !

Итак, что мне нужно сделать, чтобы активировать мою кнопку??

Заранее спасибо

13
задан Dante 21 February 2013 в 14:31
поделиться