Разработка пользовательского интерфейса на основе технологии Windows Presentation Foundation
Покупка
Основная коллекция
Тематика:
Программирование и алгоритмизация
Издательство:
Южный федеральный университет
Год издания: 2017
Кол-во страниц: 301
Дополнительно
Вид издания:
Учебник
Уровень образования:
ВО - Бакалавриат
ISBN: 978-5-9275-2375-7
Артикул: 708265.01.99
В учебнике рассмотрены основные приемы разработки пользовательского интерфейса на основе технологии Windows Presentation Foundation (WPF). входящей в состав платформы .NET. начиная с версии 3.0. Учебный материал излагается в форме подробного описания 19 проектов для среды программирования Microsoft Visual Studio 2015. демонстрирующих различные аспекты технологии WPF. Описание проектов сопровождается многочисленными комментариями. Завершающий раздел содержит 48 учебных заданий, предназначенных для закрепления изученного материала.
Для студентов бакалавриата, обучающихся по направлению подготовки 02.03.02 «Фундаментальная информатика и информационные технологии».
Тематика:
ББК:
УДК:
ОКСО:
- ВО - Бакалавриат
- 02.03.02: Фундаментальная информатика и информационные технологии
ГРНТИ:
Скопировать запись
Фрагмент текстового слоя документа размещен для индексирующих роботов
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ Федеральное государственное автономное образовательное учреждение высшего образования «ЮЖНЫЙ ФЕДЕРАЛЬНЫЙ УНИВЕРСИТЕТ» А. В. Абрамян, М. Э. Абрамян Разработка пользовательского интерфейса на основе технологии Windows Presentation Foundation Учебник по курсу «Основы разработки пользовательского интерфейса» для студентов направления 02.03.02 «Фундаментальная информатика и информационные технологии» (бакалавриат) Ростов-на-Дону – Таганрог Издательство Южного федерального университета 2017
УДК [004.4:004.51](075.8) ББК 32.973я73 А164 Печатается по решению учебно-методической комиссии Института математики, механики и компьютерных наук им. И. И. Воровича Южного федерального университета (протокол № 4 от 14 апреля 2017 г.) Рецензенты: профессор кафедры «Информатика» Ростовского государственного университета путей сообщения (РГУПС), доктор технических наук М. А. Бутакова; доцент кафедры алгебры и дискретной математики Института математики, механики и компьютерных наук им. И. И. Воровича Южного федерального университета, кандидат физико-математических наук С. С. Михалкович Абрамян, А. В. А164 Разработка пользовательского интерфейса на основе системы Windows Presentation Foundation : учебник / А. В. Абрамян, М. Э. Абрамян ; Южный федеральный университет. — Ростов-наДону ; Таганрог : Издательство Южного федерального университета, 2017. — 301 с. ISBN 978-5-9275-2375-7 В учебнике рассмотрены основные приемы разработки пользовательского интерфейса на основе технологии Windows Presentation Foundation (WPF), входящей в состав платформы .NET, начиная с версии 3.0. Учебный материал излагается в форме подробного описания 19 проектов для среды программирования Microsoft Visual Studio 2015, демонстрирующих различные аспекты технологии WPF. Описание проектов сопровождается многочисленными комментариями. Завершающий раздел содержит 48 учебных заданий, предназначенных для закрепления изученного материала. Для студентов бакалавриата, обучающихся по направлению подготовки 02.03.02 «Фундаментальная информатика и информационные технологии». УДК [004.4:004.51](075.8) ББК 32.973я73 ISBN 978-5-9275-2375-7 © Южный федеральный университет, 2017 © Абрамян А. В., Абрамян М. Э., 2017
Оглавление Предисловие.........................................................................................................7 1. События: EVENTS.......................................................................................11 1.1. Создание проекта для WPF-приложения.............................................11 1.2. Добавление компонентов и настройка их свойств .............................17 1.3. Связывание события с обработчиком ..................................................23 1.4. Отсоединение обработчика от события ...............................................26 1.5. Присоединение к событию другого обработчика...............................29 2. Работа с несколькими окнами: WINDOWS..............................................33 2.1. Настройка визуальных свойств окон. Открытие окон в обычном и диалоговом режиме ..............................................33 2.2. Решение проблем, возникающих при повтором открытии подчиненных окон................................................................................37 2.3. Контроль за состоянием подчиненного окна. Воздействие подчиненного окна на главное .....................................38 2.4. Окно с содержимым в виде обычного текста......................................39 2.5. Модальные и обычные кнопки диалогового окна ..............................40 2.6. Установка активного компонента окна. Особенности работы с фокусом в библиотеке WPF..............................................................45 2.7. Запрос на подтверждение закрытия окна.............................................46 3. Совместное использование обработчиков событий и работа с клавиатурой: CALC...................................................................49 3.1. Настройка коллективного обработчика событий................................49 3.2. Организация вычислений ......................................................................52 3.3. Простейшие приемы ускорения работы с помощью клавиатуры........................................................................54 3.4. Использование обработчика событий от клавиатуры ........................56 3.5. Контроль за изменением исходных данных ........................................59 4. Работа с датами и временем: CLOCK .......................................................62 4.1. Отображение текущего времени...........................................................62 4.2. Реализация возможностей секундомера ..............................................65 4.3. Альтернативные варианты выполнения команд с помощью мыши .................................................................................70 4.4. Отображение текущего состояния часов и секундомера на панели задач.....................................................................................71
5. Поля ввода: TEXTBOXES.......................................................................... 73 5.1. Дополнительное выделение активного поля ввода............................ 73 5.2. Управление порядком обхода полей на форме................................... 77 5.3. Проверка правильности введенных данных ....................................... 81 5.4. Блокировка окна с ошибочными данными.......................................... 83 6. Обработка событий от мыши: MOUSE .................................................... 85 6.1. Перетаскивание панели с помощью мыши......................................... 85 6.2. Изменение размеров компонента с помощью мыши. Захват мыши и его особенности......................................................... 89 6.3. Использование дополнительных курсоров ......................................... 91 6.4. Обработка ситуации с одновременным нажатием двух кнопок мыши............................................................................... 92 6.5. Перетаскивание компонентов любого типа........................................ 94 7. Перетаскивание (Drag & Drop): ZOO........................................................ 96 7.1. Перетаскивание меток в окне ............................................................... 96 7.2. Перетаскивание меток в поля ввода .................................................. 101 7.3. Взаимодействие меток при их перетаскивании друг на друга........ 104 7.4. Действия в случае перетаскивания на недопустимый приемник.............................................................. 106 7.5. Дополнительное выделение источника и приемника в ходе перетаскивания....................................................................... 107 7.6. Настройка вида курсора в режиме перетаскивания ......................... 109 7.7. Информация о текущем состоянии программы. Кнопки с комбинированным содержимым ..................................... 110 7.8. Восстановление исходного состояния............................................... 111 8. Курсоры и иконки: CURSORS................................................................. 113 8.1. Использование стандартных курсоров.............................................. 113 8.2. Установка курсора для окна и приложения в целом........................ 116 8.3. Использование в программе дополнительных курсоров................. 117 8.4. Работа с иконками................................................................................ 119 8.5. Размещение иконки в области уведомлений. Использование объектов из библиотеки Windows Forms.............. 120 9. Меню и работа с текстовыми файлами: TEXTEDIT, версия 1 ............ 123 9.1. Создание меню..................................................................................... 123 9.2. Команды WPF и связывание с ними пунктов меню......................... 125 9.3. Сохранение текста в файле ................................................................. 129 9.4. Очистка области редактирования и открытие нового файла .......... 133 9.5. Контроль за сохранением изменений, внесенных в текст............... 135 9.6. Проверка доступности команд WPF.................................................. 138 10. Дополнительные возможности меню, настройка шрифта, выравнивания и цвета: TEXTEDIT, версия 2......................................... 139 10.1. Установка начертания символов. Команды меню – флажки ........ 139
10.2. Установка выравнивания текста. Команды меню – радиокнопки........................................................................................142 10.3. Установка цвета символов и фона. Определение новых команд WPF и использование диалогового окна из библиотеки Windows Forms..........................................................144 11. Команды редактирования и контекстное меню: TEXTEDIT, версия 3 .................................................................................149 11.1. Команды редактирования..................................................................149 11.2. Создание контекстного меню............................................................153 12. Панель инструментов: TEXTEDIT, версия 4..........................................155 12.1. Создание панели инструментов. Добавление изображений к пунктам меню...................................................................................155 12.2. Использование независимых кнопок-переключателей..................161 12.3. Использование зависимых кнопок-переключателей. Привязка свойств................................................................................163 13. Статусная панель и дополнительные возможности привязки: TXTEDIT, версия 5....................................................................................167 13.1. Использование статусной панели. Определение свойств зависимости. Привязка данных с использованием конвертеров типов..............................................................................167 13.2. Скрытие панелей: два варианта реализации....................................171 13.3. Дополнение. Реализация команд-переключателей без использования обработчиков событий ......................................173 14. Цвета: COLORS .........................................................................................178 14.1. Начальная настройка макета окна ....................................................178 14.2. Определение цвета с использованием ползунков как комбинации трех основных цветов и альфасоставляющей .....................................................................................181 14.3. Инвертирование цветов и вывод цветовых констант.....................183 14.4. Отображение оттенков серого цвета ................................................184 14.5. Вывод цветовых имен ........................................................................186 14.6. Связывание компонентов с метками-подписями............................187 15. Выпадающие и обычные списки: LISTBOXES......................................189 15.1. Создание и использование выпадающих списков ..........................189 15.2. Список: добавление и удаление элементов .....................................194 15.3. Дополнительные операции для элементов списка. Использование стилей в xaml-файле................................................199 15.4. Выполнение операций над списком с помощью мыши .................204 16. Флажки и группы флажков: CHECKBOXES..........................................209 16.1. Установка флажков и контроль за их состоянием..........................209 16.2. «Глобальная» установка флажков и использование флажков, принимающих три состояния............................................................219
17. Просмотр изображений: IMGVIEW........................................................ 222 17.1. Иерархический список каталогов..................................................... 222 17.2. Список файлов. Компоненты-разделители ..................................... 229 17.3. Компоненты для просмотра изображений и прокрутки содержимого....................................................................................... 234 17.4. Масштабирование изображений ...................................................... 238 17.5. Сохранение в реестре Windows информации о состоянии программы..................................................................... 243 17.6. Восстановление из реестра Windows информации о состоянии программы..................................................................... 246 18. Табличное приложение с заставкой: TRIGFUNC.................................. 249 18.1. Формирование таблицы значений тригонометрических функций............................................................................................... 249 18.2. Отображение окна-заставки при загрузке программы................... 256 18.3. Отображение индикатора прогресса при загрузке программы.................................................................... 261 19. Создание компонентов во время выполнения программы: HTOWERS ................................................................................................. 264 19.1. Настройка начальной позиции ......................................................... 264 19.2. Перетаскивание блоков на новое место .......................................... 268 19.3. Восстановление начальной позиции, подсчет числа перемещений блоков и контроль за решением задачи .................. 271 19.4. Демонстрационное решение задачи................................................. 273 20. Учебные задания....................................................................................... 276 20.1. Проект DIALOGS: взаимодействие между окнами ....................... 276 20.2. Проект SYNC: синхронизация компонентов.................................. 279 20.3. Проект DRAGDROP: режим Drag & Drop ...................................... 282 20.4. Проект TIMER: программы, управляемые таймером .................... 285 20.5. Проект REGISTRY: диалоги и работа с реестром.......................... 289 Литература....................................................................................................... 294 Указатель.......................................................................................................... 295
Предисловие Книга знакомит читателя с основными приемами разработки пользо вательского интерфейса на основе системы Windows Presentation Foundation (WPF), входящей в платформу .NET, начиная с версии 3.0. Данная система была создана с целью снять ряд серьезных ограничений, имевшихся у ее предшественницы – системы разработки интерфейса Windows Forms, изначально входившей в состав платформы .NET. При этом наряду с сохранением концепций, лежащих в основе Windows Forms (в частности, механизма обработки событий), система WPF была дополнена новыми технологиями, позволяющими разрабатывать интерфейсы, имеющие существенно более широкие графические возможности и, что не менее важно в современном мире планшетов и смартфонов, допускающими автоматическую адаптацию к особенностям устройств, на которых запущено приложение. Новой важной чертой системы WPF для разработчиков приложений стало явное разграничение программного кода и макета приложения, которое было обеспечено включением в состав проекта XML-файлов, позволяющих описывать визуальный интерфейс на особом декларативном языке разметки XAML (eXtensible Application Markup Language). Следует отметить, что в настоящее время подобный подход реализован в большинстве систем разработки интерфейсов. Разработчики приложений на основе технологии WPF получили в свое распоряжение новые концепции, основанные на свойствах зависимостей, маршрутизируемых событиях и привязке данных. Созданные в рамках WPF иерархии классов и визуальных компонентов, в том числе компонентов с содержимым и группирующих компонентов, обеспечивающих динамическую компоновку своих дочерних элементов, позволили гибко комбинировать интерфейсные элементы, обеспечивая подходящее визуальное представление на экране любого размера. Принципиально новой по сравнению с Windows Forms стала графиче ская подсистема, основанная на технологии DirectX и позволяющая реализовывать качественную и быструю двумерную и трехмерную графику и анимацию. Был осуществлен переход на аппаратно-независимую систему единиц измерения (вместо экранных пикселов), обеспечивший одинаковый внешний вид приложения на экране с любым разрешением. Не последнее место в списке преимуществ технологии WPF занимает удобство разработки WPF-приложений, которое обеспечивается средства
ми среды программирования Microsoft Visual Studio (версии 2008–2015). Традиционные методы визуальной разработки интерфейса, имевшиеся уже в технологии Windows Forms, были дополнены методами, основанными на непосредственном редактировании xaml-файлов, определяющих макет графического приложения. Подобное редактирование (как и редактирование программного кода) существенно упрощается благодаря контекстным подсказкам, автоматической проверке синтаксиса, средствам автозавершения и другим средствам, встроенным в редакторы кода и xaml-файлов. Учитывая перечисленные выше особенности системы WPF и прини мая во внимание широкую распространенность технологий и языков программирования, основанных на платформе .NET, представляется вполне оправданным применение данной системы в качестве базовой при изучении приемов и методов разработки пользовательского интерфейса в рамках соответствующего университетского курса. При этом, однако, возникают две проблемы. Первая обусловлена сложностью системы WPF и обширностью ее средств, которые невозможно охватить в рамках одного курса. Вторая проблема связана с недостатком учебной литературы. Если ограничиться изданиями, переведенными на русский язык, то можно отметить лишь [7–9] (при включении в рассмотрение английских книг их общее количество увеличится лишь в 2–3 раза). Из этих изданий на роль учебника может отчасти претендовать только книга Чарльза Петцольда [7], написанная с большим методическим мастерством (что характерно для всех работ этого автора) и содержащая много примеров законченных программ. Две другие книги являются, скорее, справочниками, включающими небольшие фрагменты иллюстративного кода. Предлагаемая книга представляет собой попытку решения обеих про блем. С одной стороны, она посвящена лишь основным возможностям технологии WPF, которые вполне можно освоить за семестровый курс, а с другой – излагает материал в «практической» форме, упрощающей его усвоение. Изложение построено в виде подробного описания ряда законченных программных проектов, каждый из которых посвящен одному из аспектов технологии WPF. Многочисленные комментарии содержат дополнительные сведения, связанные с изучаемыми возможностями. Во многих случаях приводится сравнение рассматриваемых средств WPF с аналогичными средствами библиотеки Windows Forms. В процессе разработки проектов авторы намеренно допускают типичные ошибки, характерные для начинающих разработчиков интерфейсов, подробно объясняют их причины и приводят способы исправления. Подобный вариант изложения учебного материала «на примерах» ранее с успехом применялся авторами при чтении ими курсов по разработке пользовательских интерфейсов с использованием библиотеки VCL системы программирования Borland Delphi
[1, 2] и предшественницы WPF – библиотеки Windows Forms платформы .NET [3]. Учебник состоит из описаний 19 проектов. Его содержимое можно разбить на три части. В первой части рассматриваются базовые возможности библиотеки WPF: создание проекта для WPF-приложения, работа с xaml-файлами, использование группирующих компонентов, управление программой посредством обработчиков событий (проект EVENTS), приемы работы с окнами в WPF-приложении, организация взаимодействия между окнами, особенности диалоговых окон (проект WINDOWS), совместное использование обработчиков событий, события клавиатуры (проект CALC), таймеры в WPF-приложении (проект CLOCK), возможности полей ввода, организация проверки правильности введенных данных (проект TEXTBOXES), события мыши (проект MOUSE), механизм перетаскивания Drag & Drop (проект ZOO), работа с курсорами и иконками, создание ресурсов приложения, совместное использование средств WPF и Windows Forms (проект CURSORS). Вторая часть содержит описание разработки одного большого проекта TEXTEDIT, разбитое на 5 этапов (версий проекта). В ней основное внимание уделяется особенностям тех стандартных интерфейсных элементов, без которых не обходится практически ни одно приложение: меню и различных видов его команд (версии 1 и 2), контекстных меню (версия 3), панели инструментов (версия 4), статусной панели (версия 5). Кроме того, в версии 1 подробно рассматриваются особенности организации работы с файлами (открытие, сохранение, контроль за сохранением внесенных изменений), а также описываются приемы работы с командами WPF; в версии 2 рассказывается о том, как создавать новые команды WPF; в версии 3 рассматриваются особенности реализации команд редактирования; а в версиях 4 и 5 особое внимание уделяется различным аспектам механизма привязки компонентов и, кроме того, описываются действия по созданию новых свойств зависимости. Третья часть содержит проекты, связанные с дополнительными воз можностями WPF – работа с цветами и кистями и использование компонентов TrackBar (проект COLORS), работа со списками и использование стилей при определении макета приложения (проект LISTBOXES), работа с флажками и наборами флажков (проект CHECKBOXES), работа с иерархическими списками, реализация дерева каталогов и списка файлов, использование компонентов GridSplitter и Image, применение реестра Windows для хранения настроек приложения (проект IMGVIEW), работа с табличными списками и использование заставок и градиентных кистей (проект TRIGFUNC), создание компонентов во время выполнения программы (проект HTOWERS).
Завершает книгу раздел с 48 учебными заданиями, разбитыми на 5 групп. Каждая группа содержит однотипные задания; первая группа включает задания на организацию взаимодействия между окнами приложения, вторая – на синхронизацию компонентов и совместное использование обработчиков событий, третья – на реализацию режима перетаскивания Drag & Drop, четвертая – на создание программ, управляемых таймером, пятая – на использование стандартных диалоговых окон и работу с реестром. Большое количество заданий позволяет легко формировать из них наборы индивидуальных заданий одинакового уровня сложности. За рамками настоящей книги осталось большинство возможностей библиотеки WPF, связанных с ее графической подсистемой, поскольку детальное изучение этих возможностей более естественно отнести к курсу по компьютерной графике. Предполагается, что читатель книги уже изучил базовый курс по про граммированию. Знание основ языка C#, а также языка XML, является желательным, но не обязательным, так как ознакомиться с конструкциями этих языков можно в процессе чтения книги. Тем не менее полезной может оказаться книга [5], освещающая практически все аспекты языка C# и стандартных библиотек платформы .NET, а также книга [4], содержащая описание основных типов стандартной библиотеки (в том числе классов, связанных с обработкой строк и файлов), объектной модели языка C# и технологии LINQ, в том числе интерфейса LINQ to XML. В качестве среды программирования используется Microsoft Visual Studio 2015, однако все проекты можно реализовать и в более ранних версиях этой среды (начиная с версии 2008). Применение новых возможностей языка C#, появившихся в его версии 6.0 и доступных только в Visual Studio версий 2015 и выше, всегда особо отмечается и сопровождается альтернативными вариантами кода для предыдущих версий. Соглашения по оформлению фрагментов программного кода и xaml файлов приводятся в первом проекте EVENTS. В нем же описываются основные действия по созданию и редактированию проекта для WPFприложения.