Отключение встроенных команд

Прежде, чем приступить к реализации функциональности с помощью подключения команд, потренируемся на отключении встроенных команд элемента TextBox. Обратите внимание, что хоть мы и заменили встроенное меню TextBox на свое и соответствующие опции в этом контекстном меню перестали работать, все-таки продолжают функционировать встроенные жесты, типичные для текстового поля редактирования: Ctrl+Home, Ctrl+End, Ctrl+X, Ctrl+C, Ctrl+V, Ctrl+Z, Ctrl+Y и т.д. Попробуем отключить встроенные жесты на примере команд Cut (Ctrl+X), Copy (Ctrl+C) и Paste (Ctrl+V).

  • Добавьте в открывающий дескриптор окна подписку на событие Loaded, чтобы создать обработчик для размещения процедурного кода, который будет выполнен сразу после инициализации элементов окна, определенных в разметке
<Window x:Class="Notepad1.Window1" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="Window1: Управление состоянием источников команд" Width="500" Height="375" MinWidth="500" MinHeight="375" WindowStartupLocation="CenterScreen" ResizeMode="CanResizeWithGrip" Loaded="Window_Loaded" >......................................................</Window>
  • Присвойте в разметке имя элементу TextBox для возможности его кодирования в файле Window1.xaml.cs
<TextBox TextWrapping="Wrap" AcceptsReturn="True" AcceptsTab="True" VerticalScrollBarVisibility="Auto" Name="txtBox1" >................................................. </TextBox>
  • Добавьте в обработчик события Loaded следующий код отключения встроенных жестов вырезания, копирования и вставки в элементе текстового поля
private void Window_Loaded(object sender, RoutedEventArgs e) { // Отключаем в TextBox встроенный жест Ctrl+X для команды Cut KeyBinding keyBinding = new KeyBinding(ApplicationCommands.NotACommand, Key.X, ModifierKeys.Control); txtBox1.InputBindings.Add(keyBinding); // Отключаем в TextBox встроенный жест Ctrl+C для команды Copy keyBinding = new KeyBinding(ApplicationCommands.NotACommand, Key.C, ModifierKeys.Control); txtBox1.InputBindings.Add(keyBinding); // Отключаем в TextBox встроенный жест Ctrl+V для команды Paste keyBinding = new KeyBinding(ApplicationCommands.NotACommand, Key.V, ModifierKeys.Control); txtBox1.InputBindings.Add(keyBinding); }

Ключевым элементом в данном способе отключения жестов является команда NotACommand, которая означает пустую команду. Мы отключили только источники возбуждения встроенных команд для конкретного элемента TextBox, но сами встроенные команды продолжают существовать с теми же самыми жестами.

Подключение иконки приложения

  • Скопируйте из папки Source в корень проекта Notepad1 командой контекстного меню Add/Existing Item иконку Notepad.ico и подключите ее к окну Window1
<Window x:Class="Notepad1.Window1" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="Window1: Управление состоянием источников команд" Width="500" Height="375" MinWidth="500" MinHeight="375" WindowStartupLocation="CenterScreen" ResizeMode="CanResizeWithGrip" Loaded="Window_Loaded" Icon="Notepad.ico" >......................................................</Window>

Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: