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

Большинство объектов CommandBinding будет обрабатывать событие CanExecute (которое позволяет указать, инициируется ли команда для конкретной операции программы) и событие Executed (где можно определить код, подлежащий выполнению после того, как команда произошла). Добавьте к типу, производному от Window, следующие обработчики событий (форматы методов регламентируются ассоциированными делегатами):

private void CanHelpExecute(object sender, CanExecuteRoutedEventArgs e)

{

  // Если нужно предотвратить выполнение команды,

  // то можно установить CanExecute в false.

  e.CanExecute = true;

}

private void HelpExecuted(object sender, ExecutedRoutedEventArgs e)

{

  MessageBox.Show("Look, it is not that difficult. Just type something!",

                  "Help!");

}

В предыдущем фрагменте кода метод CanHelpExecute() реализован так, что справка по нажатию <F1> всегда разрешена; это делается путем возвращения true. Однако если в определенных ситуациях справочная система отображаться не должна, то необходимо предпринять соответствующую проверку и возвращать false. Созданная "справочная система", отображаемая внутри HelpExecute(), представляет собой всего лишь обычное окно сообщения. Теперь можете запустить приложение. После нажатия <F1> появится ваше окно сообщения.

<p id="AutBody_Root1139"><strong>Работа с командами Open и Save</strong></p>

Чтобы завершить текущий пример, вы добавите функциональность сохранения текстовых данных во внешнем файле и открытия файлов *.txt для редактирования. Можно пойти длинным путем, вручную добавив программную логику, которая включает и отключает пункты меню в зависимости от того, имеются ли данные внутри TextBox. Тем не менее, для сокращения усилий можно прибегнуть к услугам команд.

Начните с обновления элемента MenuItem, который представляет меню File верхнего уровня, путем добавления двух новых подменю, использующих объекты Save и Open класса ApplicationCommands:

 

 

 

 

      MouseEnter ="MouseEnterExitArea"

      MouseLeave ="MouseLeaveArea" Click ="FileExit_Click"/>

Вспомните, что все объекты команд реализуют интерфейс ICommand, в котором определены два события (CanExecute и Executed). Теперь необходимо разрешить окну выполнять указанные команды, предварительно проверив возможность делать это в текущих обстоятельствах; раз так, можете определить обработчик события для запуска специального кода.

Понадобится наполнить коллекцию CommandBindings, поддерживаемую окном. В разметке XAML потребуется применить синтаксис "свойство-элемент" для определения области Window.CommandBindings, в которую помещаются два определения CommandBinding. Модифицируйте определение Window, как показано ниже:

  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

  Title="MySpellChecker" Height="331" Width="508"

  WindowStartupLocation ="CenterScreen" >

 

 

   

                    Executed="OpenCmdExecuted"

                    CanExecute="OpenCmdCanExecute"/>

   

                    Executed="SaveCmdExecuted"

                    CanExecute="SaveCmdCanExecute"/>

 

 

 

  ...

 

Щелкните правой кнопкой мыши на каждом из атрибутов Executed и CanExecute в редакторе XAML и выберите в контекстном меню пункт Navigate to Event Handler (Перейти к обработчику события). Как объяснялось в главе 24, в результате автоматически сгенерируется заготовка кода для обработчика события. Теперь в файле кода C# для окна должны присутствовать четыре пустых обработчика событий.

Реализация обработчиков события CanExecute будет сообщать окну, что можно инициировать соответствующие события Executed в любой момент, для чего свойство CanExecute входного объекта CanExecuteRoutedEventArgs устанавливается в true:

private void OpenCmdCanExecute(object sender, CanExecuteRoutedEventArgs e)

{

  e.CanExecute = true;

}

private void SaveCmdCanExecute(object sender, CanExecuteRoutedEventArgs e)

{

  e.CanExecute = true;

}

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

Похожие книги

1С: Бухгалтерия 8 с нуля
1С: Бухгалтерия 8 с нуля

Книга содержит полное описание приемов и методов работы с программой 1С:Бухгалтерия 8. Рассматривается автоматизация всех основных участков бухгалтерии: учет наличных и безналичных денежных средств, основных средств и НМА, прихода и расхода товарно-материальных ценностей, зарплаты, производства. Описано, как вводить исходные данные, заполнять справочники и каталоги, работать с первичными документами, проводить их по учету, формировать разнообразные отчеты, выводить данные на печать, настраивать программу и использовать ее сервисные функции. Каждый урок содержит подробное описание рассматриваемой темы с детальным разбором и иллюстрированием всех этапов.Для широкого круга пользователей.

Алексей Анатольевич Гладкий

Программирование, программы, базы данных / Программное обеспечение / Бухучет и аудит / Финансы и бизнес / Книги по IT / Словари и Энциклопедии
1С: Управление торговлей 8.2
1С: Управление торговлей 8.2

Современные торговые предприятия предлагают своим клиентам широчайший ассортимент товаров, который исчисляется тысячами и десятками тысяч наименований. Причем многие позиции могут реализовываться на разных условиях: предоплата, отсрочка платежи, скидка, наценка, объем партии, и т.д. Клиенты зачастую делятся на категории – VIP-клиент, обычный клиент, постоянный клиент, мелкооптовый клиент, и т.д. Товарные позиции могут комплектоваться и разукомплектовываться, многие товары подлежат обязательной сертификации и гигиеническим исследованиям, некондиционные позиции необходимо списывать, на складах периодически должна проводиться инвентаризация, каждая компания должна иметь свою маркетинговую политику и т.д., вообщем – современное торговое предприятие представляет живой организм, находящийся в постоянном движении.Очевидно, что вся эта кипучая деятельность требует автоматизации. Для решения этой задачи существуют специальные программные средства, и в этой книге мы познакомим вам с самым популярным продуктом, предназначенным для автоматизации деятельности торгового предприятия – «1С Управление торговлей», которое реализовано на новейшей технологической платформе версии 1С 8.2.

Алексей Анатольевич Гладкий

Финансы / Программирование, программы, базы данных