Когда вызывается 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;
}
}