Когда вызывается CanExecute?

В демоверсии у меня есть кнопка для переключения поля boolisAsking, Я создаю команду, которая может выполняться только тогда, когда.isAsking==true

Как только я нажимаю кнопку Toggle,okButton.IsEnable изменяется немедленно, что указывает на то, что команда находит изменение.isAsking

Я очень смущен, почему объект команды замечает изменение поля, когдаCanExecute будет называться?

Хотя в течение некоторого времени я пишу приложение WPF,Я новичок в WPF Command. Пожалуйста, дайте объяснение этому случаю и, если возможно, укажите некоторые связанные статьи или блоги (яВы уже прочитали слишком много статей, в которых говорилось о команде вырезать / вставить).


    
        
        
    

Код-за:

public partial class MainWindow : Window
{
    private bool isAsking;

    public MainWindow()
    {
        InitializeComponent();

        CommandBinding cb = new CommandBinding();
        cb.Command = okCommand;
        cb.CanExecute += CanOKExecute;
        cb.Executed += cb_Executed;
        mainWindow.CommandBindings.Add(cb);
        okButton.Command = okCommand;
    }

    private RoutedCommand okCommand = new RoutedCommand("ok", typeof(MainWindow));


    void cb_Executed(object sender, ExecutedRoutedEventArgs e)
    {

    }

    void CanOKExecute(object sender, CanExecuteRoutedEventArgs e)
    {
        e.CanExecute = isAsking;
    }

    private void Button_Click_1(object sender, RoutedEventArgs e)
    {
        isAsking = !isAsking;
    }
}

Ответы на вопрос(4)

Ваш ответ на вопрос