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

ЖАНРЫ

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

Cursor="Help" />

</ToolBar>

Ваш элемент управления

ToolBar
образован из двух элементов управления
Button
, которые предназначены для обработки тех же самых событий теми же методами из файла кода. С помощью такого приема можно дублировать обработчики для обслуживания и пунктов меню, и кнопок панели инструментов. Хотя в данной панели применяются типичные нажимаемые кнопки, вы должны принимать во внимание, что тип
ToolBar
"является"
ContentControl
, а потому на его поверхность можно помещать любые типы (скажем, раскрывающиеся списки,
изображения и графику). Еще один интересный аспект связан с тем, что кнопка Check (Проверить) поддерживает специальный курсор мыши через свойство
Cursor
.

На заметку! Элемент

Toolbar
может быть дополнительно помещен внутрь элемента
ToolBarTray
, который управляет компоновкой, стыковкой и перетаскиванием для набора объектов
ToolBar
.

Построение строки состояния

Элемент управления строкой состояния (

StatusBar
) стыкуется с нижней частью
DockPanel
и содержит единственный элемент управления
TextBlock
, который ранее в главе не использовался. Элемент
TextBlock
можно применять для хранения текста с форматированием вроде выделения полужирным и подчеркивания, добавления разрывов строк и т.д. Поместите приведенную ниже разметку сразу после предыдущего определения элемента управления
ToolBar
:

<!-- Разместить строку состояния внизу -->

<StatusBar DockPanel.Dock ="Bottom" Background="Beige" >

<StatusBarItem>

<TextBlock Name="statBarText" Text="Ready"/>

</StatusBarItem>

</StatusBar>

Завершение проектирования пользовательского интерфейса

Финальный аспект проектирования нашего пользовательского интерфейса связан с определением поддерживающего разделители элемента

Grid
, в котором определены две колонки. Слева находится элемент управления
Expander
, помещенный внутрь
StackPanel
, который будет отображать список предполагаемых вариантов правописания, а справа — элемент
TextBox
с поддержкой многострочного текста, линеек прокрутки и включенной проверкой орфографии. Элемент
Grid
может быть целиком размещен в левой части родительской панели
DockPanel
. Чтобы завершить определение пользовательского интерфейса окна, добавьте следующую разметку XAML, расположив ее непосредственно под разметкой, которая описывает
StatusBar
:

<Grid DockPanel.Dock ="Left" Background ="AliceBlue">

<!-- Определить строки и колонки -->

<Grid.ColumnDefinitions>

<ColumnDefinition />

<ColumnDefinition />

</Grid.ColumnDefinitions>

<GridSplitter Grid.Column ="0" Width ="5" Background ="Gray" />

<StackPanel Grid.Column="0" VerticalAlignment ="Stretch" >

<Label Name="lblSpellingInstructions" FontSize="14" Margin="10,10,0,0">

Spelling Hints

</Label>

<Expander Name="expanderSpelling" Header ="Try these!"

Margin="10,10,10,10">

<!--
Будет заполняться программно -->

<Label Name ="lblSpellingHints" FontSize ="12"/>

</Expander>

</StackPanel>

<!-- Это будет областью для ввода -->

<TextBox Grid.Column ="1"

SpellCheck.IsEnabled ="True"

AcceptsReturn ="True"

Name ="txtData" FontSize ="14"

BorderBrush ="Blue"

VerticalScrollBarVisibility="Auto"

HorizontalScrollBarVisibility="Auto">

</TextBox>

</Grid>

Реализация обработчиков событий MouseEnter/MouseLeave

К настоящему моменту пользовательский интерфейс окна готов. Понадобится лишь предоставить реализации оставшихся обработчиков событий. Начните с обновления файла кода C# так, чтобы каждый из обработчиков событий

MouseEnter
и
MouseLeave
устанавливал в текстовой панели строки состояния подходящее сообщение, которое окажет помощь конечному пользователю:

public partial class MainWindow : System.Windows.Window

{

...

protected void MouseEnterExitArea(object sender, RoutedEventArgs args)

{

statBarText.Text = "Exit the Application";

}

protected void MouseEnterToolsHintsArea(object sender, RoutedEventArgs args)

{

statBarText.Text = "Show Spelling Suggestions";

}

protected void MouseLeaveArea(object sender, RoutedEventArgs args)

{

statBarText.Text = "Ready";

}

}

Теперь приложение можно запустить. Текст в строке состояния должен изменяться в зависимости от того, над каким пунктом меню или кнопкой панели инструментов находится курсор.

Реализация логики проверки правописания

Инфраструктура WPF имеет встроенную поддержку проверки правописания, независимую от продуктов Microsoft Office. Это значит, что использовать уровень взаимодействия с СОМ для обращения к функции проверки правописания Microsoft Word не понадобится: та же самая функциональность добавляется с помощью всего нескольких строк кода.

Вспомните, что при определении элемента управления

TextBox
свойство
Spellcheck.IsEnabled
устанавливается в
true
. В результате неправильно написанные слова подчеркиваются красной волнистой линией, как происходит в Microsoft Office. Более того, лежащая в основе программная модель предоставляет доступ к механизму проверки правописания, который позволяет получить список предполагаемых вариантов для слов, написанных с ошибкой.

Поделиться с друзьями: