books-read.com
books-read.com » Компьютеры и Интернет » Базы данных » Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю

Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю

Наш ресурс дает возможность бесплатно читать книгу онлайн Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю. Жанр: Базы данных . Сайт books-read.com дает возможность читать полную версию книги без регистрации и sms. Все книги онлайн, не надо качать fb2, epub, txt.
Добавить книгу Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю в приложение ЧИТАТЬ КНИГУ ОФЛАЙН в приложении ios/android
Перейти на страницу:

  }

  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
для кнопки Change Color. Поместите в начало файла следующие операторы
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"

Перейти на страницу:

Троелсен Эндрю читать все книги автора по порядку

Троелсен Эндрю - на сайте онлайн книг books-read.com Вы можете читать полные версии книг автора в одном месте.


Язык программирования C#9 и платформа .NET5 отзывы

Отзывы читателей о книге Язык программирования C#9 и платформа .NET5, автор: Троелсен Эндрю. Читайте комментарии и мнения людей о произведении.


Уважаемые читатели и просто посетители нашей библиотеки! Просим Вас придерживаться определенных правил при комментировании литературных произведений.

  • 1. Просьба отказаться от дискриминационных высказываний. Мы защищаем право наших читателей свободно выражать свою точку зрения. Вместе с тем мы не терпим агрессии. На сайте запрещено оставлять комментарий, который содержит унизительные высказывания или призывы к насилию по отношению к отдельным лицам или группам людей на основании их расы, этнического происхождения, вероисповедания, недееспособности, пола, возраста, статуса ветерана, касты или сексуальной ориентации.
  • 2. Просьба отказаться от оскорблений, угроз и запугиваний.
  • 3. Просьба отказаться от нецензурной лексики.
  • 4. Просьба вести себя максимально корректно как по отношению к авторам, так и по отношению к другим читателям и их комментариям.

Надеемся на Ваше понимание и благоразумие. С уважением, администратор books-read.com


Прокомментировать
Подтвердите что вы не робот:*