Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Регистрация обработчиков в разметке






Мы подготовили интерфейс окна Window1 и дальше наступает этап кодирования функциональности. В окне Window1 мы откажемся от услуг механизма команд, а будем использовать обычную технологию, основанную на обработчиках событий. Начнем постепенно подключать обработчики к источникам задач, используя событие Click.

  • Подключите декларативно в файле разметки Window1.xaml к каждому источнику события Click соответствующий обработчик и назначьте имена элементам для последующего управления ими из кода

Обратите внимание на некоторую некорректность работы подсказчика кода IntelliSense, который не предлагает нам список уже созданных обработчиков. Он ищет их в застраничном файле Window1.xaml.cs, в то время как обработчики находятся в других файлах частичного класса. В данном случае это не слишком большое неудобство, поскольку мнемоника составления имен у нас строго соблюдена и мы вряд ли ошибемся. Но в больших практических проектах это следует иметь ввиду, прежде чем разбивать класс окна по отдельным файлам.

Разметка с подключенными обработчиками и присвоенными именами будет выглядеть так (файл приводится целиком)

< Window x: Class=" Notepad1.Window1" xmlns=" https://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns: x=" https://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.Resources> <! -- File --> < Image x: Shared=" False" x: Key=" iconNew" Source=" Images/NewDocumentHS.png" Width=" 16" Height=" 16" /> < Image x: Shared=" False" x: Key=" iconOpen" Source=" Images/OpenHS.png" Width=" 16" Height=" 16" /> < Image x: Shared=" False" x: Key=" iconSave" Source=" Images/SaveHS.png" Width=" 16" Height=" 16" /> < Image x: Shared=" False" x: Key=" iconPageSetup" Source=" Images/PrintSetupHS.png" Width=" 16" Height=" 16" /> < Image x: Shared=" False" x: Key=" iconPrintPreview" Source=" Images/PrintPreviewHS.png" Width=" 16" Height=" 16" /> < Image x: Shared=" False" x: Key=" iconPrint" Source=" Images/PrintHS.png" Width=" 16" Height=" 16" /> <! -- Edit --> < Image x: Shared=" False" x: Key=" iconUndo" Source=" Images/Edit_UndoHS.png" Width=" 16" Height=" 16" /> < Image x: Shared=" False" x: Key=" iconRedo" Source=" Images/Edit_RedoHS.png" Width=" 16" Height=" 16" /> < Image x: Shared=" False" x: Key=" iconCut" Source=" Images/CutHS.png" Width=" 16" Height=" 16" /> < Image x: Shared=" False" x: Key=" iconCopy" Source=" Images/CopyHS.png" Width=" 16" Height=" 16" /> < Image x: Shared=" False" x: Key=" iconPaste" Source=" Images/PasteHS.png" Width=" 16" Height=" 16" /> < Image x: Shared=" False" x: Key=" iconDelete" Source=" Images/DeleteHS.png" Width=" 16" Height=" 16" /> < Image x: Shared=" False" x: Key=" iconFind" Source=" Images/FindHS.png" Width=" 16" Height=" 16" /> < Image x: Shared=" False" x: Key=" iconFont" Source=" Images/FontHS.png" Width=" 16" Height=" 16" /> < /Window.Resources> < DockPanel LastChildFill=" True" > <! -- Меню --> < Menu DockPanel.Dock=" Top" > < MenuItem Header=" _File" > <! -- Сокращенные варианты подключения иконок с использованием статических ресурсов --> < MenuItem Name=" itemNew" Click=" NewOnExecute" Header=" _New" InputGestureText=" Ctrl+N" Icon=" {StaticResource iconNew}" /> < MenuItem Name=" itemOpen" Click=" OpenOnExecute" Header=" _Open..." InputGestureText=" Ctrl+O" Icon=" {StaticResource iconOpen}" /> < MenuItem Name=" itemSave" Click=" SaveOnExecute" Header=" _Save" InputGestureText=" Ctrl+S" Icon=" {StaticResource iconSave}" /> < MenuItem Name=" itemSaveAs" Click=" SaveAsOnExecute" Header=" Save _As..." /> < Separator /> < MenuItem Name=" itemPageSetup" Click=" PageSetupOnExecute" Header=" Page Set_up..." Icon=" {StaticResource iconPageSetup}" /> < MenuItem Name=" itemPrintPreview" Click=" PrintPreviewOnExecute" Header=" P_rint Preview" InputGestureText=" Ctrl+F2" Icon=" {StaticResource iconPrintPreview}" /> < MenuItem Name=" itemPrint" Click=" PrintOnExecute" Header=" _Print..." InputGestureText=" Ctrl+P" Icon=" {StaticResource iconPrint}" /> < Separator /> < MenuItem Name=" itemExit" Click=" ExitOnExecute" Header=" E_xit" /> < /MenuItem> < MenuItem Header=" _Edit" > < MenuItem Name=" itemUndo" Click=" UndoOnExecute" Header=" _Undo" InputGestureText=" Ctrl+Z" Icon=" {StaticResource iconUndo}" /> < MenuItem Name=" itemRedo" Click=" RedoOnExecute" Header=" _Redo" InputGestureText=" Ctrl+Y" Icon=" {StaticResource iconRedo}" /> < Separator> < /Separator> < MenuItem Name=" itemCut" Click=" CutOnExecute" Header=" Cu_t" InputGestureText=" Ctrl+X" Icon=" {StaticResource iconCut}" /> < MenuItem Name=" itemCopy" Click=" CopyOnExecute" Header=" _Copy" InputGestureText=" Ctrl+C" Icon=" {StaticResource iconCopy}" /> < MenuItem Name=" itemPaste" Click=" PasteOnExecute" Header=" _Paste" InputGestureText=" Ctrl+V" Icon=" {StaticResource iconPaste}" /> < MenuItem Name=" itemDelete" Click=" DeleteOnExecute" Header=" De_lete" InputGestureText=" Del" Icon=" {StaticResource iconDelete}" /> < Separator> < /Separator> < MenuItem Name=" itemFind" Click=" FindOnExecute" Header=" _Find..." InputGestureText=" Ctrl+F" Icon=" {StaticResource iconFind}" /> < MenuItem Name=" itemFindNext" Click=" FindNextOnExecute" Header=" Find _Next" InputGestureText=" F3" /> < MenuItem Name=" itemReplace" Click=" ReplaceOnExecute" Header=" _Replace..." InputGestureText=" Ctrl+H" /> < MenuItem Name=" itemGoTo" Click=" GoToOnExecute" Header=" _Go To..." InputGestureText=" Ctrl+G" /> < Separator> < /Separator> < MenuItem Name=" itemSelectAll" Click=" SelectAllOnExecute" Header=" Select _All" InputGestureText=" Ctrl+A" /> < /MenuItem> < MenuItem Header=" F_ormat" > < MenuItem Name=" itemFont" Click=" FontOnExecute" Header=" _Font..." Icon=" {StaticResource iconFont}" /> < Separator /> < MenuItem Name=" itemWordWrap" Click=" WordWrapOnExecute" Header=" _Word Wrap" IsCheckable=" True" IsChecked=" True" InputGestureText=" Ctrl+W" /> < /MenuItem> < MenuItem Header=" _Help" > < MenuItem Name=" itemAbout" Click=" AboutOnExecute" Header=" _About" /> < /MenuItem> < /Menu> <! -- Панель инструментов --> < ToolBarTray DockPanel.Dock=" Top" > < ToolBar> < Button Name=" btnNew" Click=" NewOnExecute" Width=" 23" Content=" {StaticResource iconNew}" /> < Button Name=" btnOpen" Click=" OpenOnExecute" Width=" 23" Content=" {StaticResource iconOpen}" /> < Button Name=" btnSave" Click=" SaveOnExecute" Width=" 23" Content=" {StaticResource iconSave}" /> < /ToolBar> < ToolBar> < Button Name=" btnUndo" Click=" UndoOnExecute" Width=" 23" Content=" {StaticResource iconUndo}" /> < Button Name=" btnRedo" Click=" RedoOnExecute" Width=" 23" Content=" {StaticResource iconRedo}" /> < Separator /> < Button Name=" btnCut" Click=" CutOnExecute" Width=" 23" Content=" {StaticResource iconCut}" /> < Button Name=" btnCopy" Click=" CopyOnExecute" Width=" 23" Content=" {StaticResource iconCopy}" /> < Button Name=" btnPaste" Click=" PasteOnExecute" Width=" 23" Content=" {StaticResource iconPaste}" /> < Button Name=" btnDelete" Click=" DeleteOnExecute" Width=" 23" Content=" {StaticResource iconDelete}" /> < /ToolBar> < ToolBar Header=" Find: " > < TextBox Width=" 100" /> < Button Name=" btnFind" Click=" FindOnExecute" Width=" 23" Content=" {StaticResource iconFind}" /> < /ToolBar> < /ToolBarTray> <! -- Строка состояния --> < StatusBar DockPanel.Dock=" Bottom" Height=" 32" Name=" statusBar" > < Label> Simulator Application is Loading< /Label> < Separator /> < ProgressBar Height=" 20" Width=" 100" IsIndeterminate=" True" /> < /StatusBar> <! -- Многострочное текстовое поле редактирования --> < TextBox TextWrapping=" Wrap" AcceptsReturn=" True" AcceptsTab=" True" VerticalScrollBarVisibility=" Auto" Name=" txtBox1" > < TextBox.ContextMenu> < ContextMenu Width=" 100" > < MenuItem Name=" contextCut" Click=" CutOnExecute" Header=" Cu_t" Icon=" {StaticResource iconCut}" /> < MenuItem Name=" contextCopy" Click=" CopyOnExecute" Header=" _Copy" Icon=" {StaticResource iconCopy}" /> < MenuItem Name=" contextPaste" Click=" PasteOnExecute" Header=" _Paste" Icon=" {StaticResource iconPaste}" /> < MenuItem Name=" contextDelete" Click=" DeleteOnExecute" Header=" De_lete" Icon=" {StaticResource iconDelete}" /> < /ContextMenu> < /TextBox.ContextMenu> < /TextBox> < /DockPanel> < /Window>

Столько имен нам не понадобиться, но для единообразия мы, на всякий случай, промаркировали все источники задач (может пригодится).

  • Запустите приложение для проверки отсутствия синтаксических ошибок

Следующим шагом следует наполнить созданные заготовки обработчиков практическим кодом в соответствии с логикой работы приложения. Поскольку наша задача состоит не в создании полнофункционального приложения целиком, а в иллюстрации технологии его создания с применением механизма команд, реализуем намеченные задачи частично. Некоторые функции, ввиду их большого объема и сложности кодирования, мы только обозначим выдачей соответствующих диалоговых окон или сообщений. Управление доступностью элементов-источников задач пользовательского интерфейса пока отложим 'на потом' (или навсегда!).






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.