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

Шрифт:

-
+

Интервал:

-
+

Закладка:

Сделать
1 ... 498 499 500 501 502 503 504 505 506 ... 642

public MainWindow()

{

  InitializeComponent();

  SetF1CommandBinding();

}

Метод SetFICommandBinding() будет программно создавать новый объект CommandBinding, который можно применять всякий раз, когда требуется привязать объект команды к заданному обработчику событий в приложении. Сконфигурируйте объект CommandBinding для работы с командой ApplicationCommands.Help, которая автоматически выдается по нажатию клавиши <F1>:

private void SetF1CommandBinding()

{

  CommandBinding helpBinding = new CommandBinding(ApplicationCommands.Help);

  helpBinding.CanExecute += CanHelpExecute;

  helpBinding.Executed += HelpExecuted;

  CommandBindings.Add(helpBinding);

}

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

private void CanHelpExecute(object sender, CanExecuteRoutedEventArgs e)

{

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

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

  e.CanExecute = true;

}

private void HelpExecuted(object sender, ExecutedRoutedEventArgs e)

{

  MessageBox.Show(&quot;Look, it is not that difficult. Just type something!&quot;,

                  &quot;Help!&quot;);

}

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

Работа с командами Open и Save

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

(window.adrunTag = window.adrunTag || []).push({v: 1, el: 'adrun-4-390', c: 4, b: 390})

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

&lt;MenuItem Header=&quot;_File&quot;&gt;

  &lt;MenuItem Command =&quot;ApplicationCommands.Open&quot;/&gt;

  &lt;MenuItem Command =&quot;ApplicationCommands.Save&quot;/&gt;

  &lt;Separator/&gt;

  &lt;MenuItem Header =&quot;_Exit&quot;

      MouseEnter =&quot;MouseEnterExitArea&quot;

      MouseLeave =&quot;MouseLeaveArea&quot; Click =&quot;FileExit_Click&quot;/&gt;

&lt;/MenuItem&gt;

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

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

&lt;Window x:Class=&quot;MyWordPad.MainWindow&quot;

  xmlns=&quot;http://schemas.microsoft.com/winfx/2006/xaml/presentation&quot;

  xmlns:x=&quot;http://schemas.microsoft.com/winfx/2006/xaml&quot;

  Title=&quot;MySpellChecker&quot; Height=&quot;331&quot; Width=&quot;508&quot;

  WindowStartupLocation =&quot;CenterScreen&quot; &gt;

<b>  &lt;!-- Это информирует элемент управления Window о том, какие</b>

<b>       обработчики вызывать при поступлении команд Open и Save --&gt;</b>

  &lt;Window.CommandBindings&gt;

    &lt;CommandBinding Command=&quot;ApplicationCommands.Open&quot;

                    Executed=&quot;OpenCmdExecuted&quot;

1 ... 498 499 500 501 502 503 504 505 506 ... 642
На этой странице вы можете бесплатно читать книгу Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю бесплатно.
Похожие на Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю книги

Оставить комментарий