Чтение онлайн

на главную

Жанры

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

Добавьте в метод

ToolsSpellingHints_Click
следующий код:

protected void ToolsSpellingHints_Click(object sender, RoutedEventArgs args)

{

string spellingHints = string.Empty;

// Попробовать получить ошибку правописания

// в текущем положении курсора ввода.

SpellingError error = txtData.GetSpellingError(txtData.CaretIndex);

if (error != null)

{

//
Построить строку с предполагаемыми вариантами правописания.

foreach (string s in error.Suggestions)

{

spellingHints += $"{s}\n";

}

// Отобразить предполагаемые варианты и раскрыть элемент Expander.

lblSpellingHints.Content = spellingHints;

expanderSpelling.IsExpanded = true;

}

}

Приведенный выше код довольно прост. С применением свойства

CaretIndex
извлекается объект
SpellingError
и вычисляется текущее положение курсора ввода в текстовом поле. Если в указанном месте присутствует ошибка (т.е. значение error не равно
null
), тогда осуществляется проход в цикле по списку предполагаемых вариантов с использованием свойства
Suggestions
. После того, как все предполагаемые варианты для неправильно написанного слова получены, они помещаются в элемент
Label
внутри элемента
Expander
.

Вот и все! С помощью нескольких строк процедурного кода (и приличной порции разметки XAML) заложены основы для функционирования текстового процессора. После изучения управляющих команд будут добавлены дополнительные возможности.

Понятие команд WPF

Инфраструктура WPF предлагает поддержку того, что может считаться независимыми от элементов управления событиями, через архитектуру команд. Обычное событие .NET Core определяется внутри некоторого базового класса и может использоваться только этим классом или его потомками. Следовательно, нормальные события .NET Core тесно привязаны к классу, в котором они определены.

По контрасту команды WPF представляют собой похожие на события сущности, которые не зависят от специфического элемента управления и во многих случаях могут успешно применяться к многочисленным (и на вид несвязанным) типам элементов управления. Вот лишь несколько примеров: WPF поддерживает команды копирования, вырезания и вставки, которые могут использоваться в разнообразных элементах пользовательского интерфейса (вроде пунктов меню, кнопок панели инструментов и специальных кнопок), а также клавиатурные комбинации (скажем, <Ctrl+C>

и <Ctrl+V>).

В то время как другие инструментальные наборы, ориентированные на построение пользовательских интерфейсов (вроде Windows Forms), предлагают для таких целей стандартные события, их применение обычно дает в результате избыточный и трудный в сопровождении код. Внутри модели WPF в качестве альтернативы можно использовать команды. Итогом обычно оказывается более компактная и гибкая кодовая база.

Внутренние объекты команд

Инфраструктура WPF поставляется с множеством встроенных команд, каждую из которых можно ассоциировать с соответствующей клавиатурной комбинацией (или другим входным жестом). С точки зрения программирования команда WPF — это любой объект, поддерживающий свойство (часто называемое

Command
), которое возвращает объект, реализующий показанный ниже интерфейс
ICommand
:

public interface ICommand

{

// Возникает, когда происходят изменения, влияющие

// на то, должна выполняться команда или нет.

event EventHandler CanExecuteChanged;

// Определяет метод, который выясняет, может ли

// команда выполняться в ее текущем состоянии.

bool CanExecute(object parameter);

// Определяет метод для вызова при обращении к команде.

void Execute(object parameter);

}

В WPF предлагаются разнообразные классы команд, которые открывают доступ к примерно сотне готовых объектов команд. В таких классах определены многочисленные свойства, представляющие специфические объекты команд, каждый из которых реализует интерфейс

ICommand
. В табл. 25.3 кратко описаны избранные стандартные объекты команд.

Подключение команд к свойству Command

Для подключения любого свойства команд WPF к элементу пользовательского интерфейса, который поддерживает свойство

Command
(такому как
Button
или
MenuItem
), потребуется проделать совсем небольшую работу. В качестве примера модифицируйте текущую систему меню, добавив новый пункт верхнего уровня по имени Edit (Правка) с тремя подэлементами, которые позволяют копировать, вставлять и вырезать текстовые данные:

Поделиться:
Популярные книги

Вернуть невесту. Ловушка для попаданки 2

Ардова Алиса
2. Вернуть невесту
Любовные романы:
любовно-фантастические романы
7.88
рейтинг книги
Вернуть невесту. Ловушка для попаданки 2

Самый лучший пионер

Смолин Павел
1. Самый лучший пионер
Фантастика:
попаданцы
альтернативная история
5.62
рейтинг книги
Самый лучший пионер

Отмороженный 6.0

Гарцевич Евгений Александрович
6. Отмороженный
Фантастика:
боевая фантастика
постапокалипсис
рпг
5.00
рейтинг книги
Отмороженный 6.0

Промышленникъ

Кулаков Алексей Иванович
3. Александр Агренев
Приключения:
исторические приключения
9.13
рейтинг книги
Промышленникъ

Законы Рода. Том 9

Flow Ascold
9. Граф Берестьев
Фантастика:
городское фэнтези
попаданцы
аниме
дорама
фэнтези
фантастика: прочее
5.00
рейтинг книги
Законы Рода. Том 9

Возвышение Меркурия. Книга 2

Кронос Александр
2. Меркурий
Фантастика:
фэнтези
5.00
рейтинг книги
Возвышение Меркурия. Книга 2

На границе империй. Том 10. Часть 3

INDIGO
Вселенная EVE Online
Фантастика:
боевая фантастика
космическая фантастика
попаданцы
5.00
рейтинг книги
На границе империй. Том 10. Часть 3

Бракованная невеста. Академия драконов

Милославская Анастасия
Фантастика:
фэнтези
сказочная фантастика
5.00
рейтинг книги
Бракованная невеста. Академия драконов

На распутье

Кронос Александр
2. Лэрн
Фантастика:
фэнтези
героическая фантастика
стимпанк
5.00
рейтинг книги
На распутье

Новый Рал

Северный Лис
1. Рал!
Фантастика:
фэнтези
попаданцы
5.70
рейтинг книги
Новый Рал

Черный маг императора

Герда Александр
1. Черный маг императора
Фантастика:
юмористическая фантастика
попаданцы
аниме
5.00
рейтинг книги
Черный маг императора

Отвергнутая невеста генерала драконов

Лунёва Мария
5. Генералы драконов
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Отвергнутая невеста генерала драконов

Сотник

Ланцов Михаил Алексеевич
4. Помещик
Фантастика:
альтернативная история
5.00
рейтинг книги
Сотник

Студиозус 2

Шмаков Алексей Семенович
4. Светлая Тьма
Фантастика:
юмористическое фэнтези
городское фэнтези
аниме
5.00
рейтинг книги
Студиозус 2