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