Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю
На нашем сайте KnigaRead.com Вы можете абсолютно бесплатно читать книгу онлайн Троелсен Эндрю, "Язык программирования C#9 и платформа .NET5" бесплатно, без регистрации.
} public void Execute(object parameter) { throw new NotImplementedException(); } public event EventHandler CanExecuteChanged;}Если метод
CanExecute()truefalseCanExecute()trueExecute()CommandParameterCanExecuteChangedCanExecute()PropertyChangedВ текущем примере кнопка Change Color должна работать, только если параметр отличается от
nullCarCanExecute()public bool CanExecute(object parameter) => (parameter as Car) != null;Значение параметра для метода
Execute()CanExecute()Execute()objectCarCarpublic void Execute(object parameter){ ((Car)parameter).Color="Pink";}Присоединение команды к CommandManager
Финальное обновление класса команды связано с присоединением команды к диспетчеру команд (
CommandManagerCanExecute()CanExecuteChangedpublic event EventHandler CanExecuteChanged{ add => CommandManager.RequerySuggested += value; remove => CommandManager.RequerySuggested -= value;}Изменение файла MainWindow.xaml.cs
Следующее изменение связано с созданием экземпляра класса
ChangeColorCommandButtonMainWindowMainWindow.xaml.csClickusingusing WpfCommands.Cmds;using System.Windows.Input;Добавьте открытое свойство по имени
ChangeColorCmdICommandChangeColorCommandnullprivate ICommand _changeColorCommand = null;public ICommand ChangeColorCmd => _changeColorCommand ??= new ChangeColorCommand());Изменение файла MainWindow.xaml
Как было показано в главе 25, элементы управления WPF, реагирующие на щелчки (вроде
ButtonCommandbtnChangeColorMainWindowRelativeSourceCommand="{Binding Path=ChangeColorCmd, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type Window}}}"Кнопка также нуждается в передаче объекта
CarCanExecute()Execute()CommandParameterPathCommandParameterSelectedItemComboBoxcboCarsCommandParameter="{Binding ElementName=cboCars, Path=SelectedItem}"Вот завершенная разметка для кнопки:
<Button x:Name="btnChangeColor" Content="Change Color" Margin="5,0,5,0"