protected void MouseLeaveArea(object sender, RoutedEventArgs args)
{
statBarText.Text = "Ready";
}
}
Теперь приложение можно запустить. Текст в строке состояния должен изменяться в зависимости от того, над каким пунктом меню или кнопкой панели инструментов находится курсор.
Реализация логики проверки правописания
Инфраструктура WPF имеет встроенную поддержку проверки правописания, независимую от продуктов Microsoft Office. Это значит, что использовать уровень взаимодействия с СОМ для обращения к функции проверки правописания Microsoft Word не понадобится: та же самая функциональность добавляется с помощью всего нескольких строк кода.
Вспомните, что при определении элемента управления TextBox
свойство Spellcheck.IsEnabled
устанавливается в true
. В результате неправильно написанные слова подчеркиваются красной волнистой линией, как происходит в Microsoft Office. Более того, лежащая в основе программная модель предоставляет доступ к механизму проверки правописания, который позволяет получить список предполагаемых вариантов для слов, написанных с ошибкой.
Добавьте в метод 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 предлагает поддержку того, что может считаться
По контрасту команды WPF представляют собой похожие на события сущности, которые не зависят от специфического элемента управления и во многих случаях могут успешно применяться к многочисленным (и на вид несвязанным) типам элементов управления. Вот лишь несколько примеров: WPF поддерживает команды копирования, вырезания и вставки, которые могут использоваться в разнообразных элементах пользовательского интерфейса (вроде пунктов меню, кнопок панели инструментов и специальных кнопок), а также клавиатурные комбинации (скажем, <Ctrl+C> и <Ctrl+V>).
В то время как другие инструментальные наборы, ориентированные на построение пользовательских интерфейсов (вроде Windows Forms), предлагают для таких целей стандартные события, их применение обычно дает в результате избыточный и трудный в сопровождении код. Внутри модели WPF в качестве альтернативы можно использовать команды. Итогом обычно оказывается более компактная и гибкая кодовая база.
Внутренние объекты команд