Разработка пользовательского интерфейса на основе технологии 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приложения.
1. События: EVENTS Рис. 1. Окно приложения EVENTS 1.1. Создание проекта для WPF-приложения Для того чтобы создать проект в среде программирования Visual Studio, выполните команду File | New | Project (Ctrl+Shift+N), в появившемся окне New Project выберите в левой части вариант Visual C#, а в правой части – вариант WPF Application, в поле ввода Name укажите имя проекта (в нашем случае EVENTS), а в поле ввода Location укажите каталог, в котором будет создан каталог проекта. Желательно снять флажок Create directory for solution, чтобы не создавался промежуточный каталог для решения (каталог для решения удобно использовать в ситуации, когда решение содержит несколько проектов; в нашем случае решение всегда будет содержать единственный проект). После указания всех настроек нажмите кнопку «OK». В результате будет создан каталог EVENTS, содержащий все файлы одноименного проекта, в том числе файл решения EVENTS.sln, файл проекта EVENTS.csproj, а также файлы для двух основных классов проекта, созданных автоматически: класса MainWindow, представляющего главное окно программы, и класса App, обеспечивающего запуск программы, в ходе которого создается и отображается на экране экземпляр главного окна. Для каждого класса создаются два файла: с расширением xaml, котрый содержит часть определения класса в специальном формате, и с расширением cs (перед которым тоже содержится текст xaml), содержащий часть определения класса на языке C#. Файл с расширением xaml (xaml-файл) имеет формат XML (eXtensible Markup Language – расширяемый язык разметки). Аббревиатура XAML (произносится «зэмл» или «замл») означает, что используется специализированный вариант языка XML: eXtensible
Application Markup Language – расширяемый язык разметки для приложений. Приведем содержимое файлов, связанных с классом App и созданных в Visual Studio 2015. App.xaml: <Application x:Class="EVENTS.App" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:local="clr-namespace:EVENTS" StartupUri="MainWindow.xaml"> <Application.Resources> </Application.Resources> </Application> App.xaml.cs: using System; using System.Collections.Generic; using System.Configuration; using System.Data; using System.Linq; using System.Threading.Tasks; using System.Windows; namespace EVENTS { /// <summary> /// Interaction logic for App.xaml /// </summary> public partial class App : Application { } } Анализ этих файлов показывает, что класс App наследуется от стан дартного класса Application, а также что в cs-файле никакой новой функциональности в класс App не добавляется (обратите внимание на то, что при определении класса App в cs-файле указывается модификатор partial, означающий, что часть определения этого класса содержится в другом файле). Созданный класс (как и другие классы проекта, создаваемые автоматически) связывается с пространством имен EVENTS, совпадающим с именем проекта.
Перед анализом содержимого xaml-файла следует предварительно описать основные правила, по которым формируется любой XML-файл. Подобные файлы состоят из иерархического набора вложенных друг в друга именованных XML-элементов, причем каждый элемент может иметь любое количество XML-атрибутов и дочерних элементов. Элементы оформляются в виде тегов; открывающий тег элемента имеет вид <имя_элемента список_атрибутов>, а закрывающий тег – </имя_элемента>. Между этими тегами располагается содержимое элемента, которое может представлять собой обычный текст и/или другие (дочерние) элементы (а также другие XML-узлы, которые мы не будем обсуждать, так как в xaml-файле они не используются). Число уровней вложенности элементов может быть любым. Если элемент не имеет содержимого, то он может представляться в виде одного комбинированного тега вида <имя_элемента список_атрибутов />. Атрибуты в списке определяются следующим образом: имя_атрибута="значение_атрибута"; значение обязательно заключается в кавычки (одинарные или двойные). Все атрибуты одного элемента должны иметь различные имена, в то время как его дочерние элементы могут иметь совпадающие имена. Регистр в именах учитывается; имена как атрибутов, так и элементов могут содержать только буквы, цифры, символы «.» (точка), «-» (дефис) и «_» (подчеркивание) и начинаться либо с буквы, либо с символа подчеркивания. Пробелы в именах не допускаются. Перед именами элементов и атрибутов могут указываться префиксы пространств имен, отделяемые от собственно имени двоеточием (в файле App.xaml имеются два таких атрибута: xmlns:x и xmlns:local). Любой XML-файл должен содержать единственный XML-элемент верхнего уровня, называемый корневым элементом (в файле App.xaml это элемент Application). В той части определения класса App, которая размещается в xaml файле, содержится единственная, но очень важная настройка – указание на класс, экземпляр которого будет создан при запуске программы. Это атрибут StartupUri элемента Application, его значение равно MainWindow.xaml. Фактически данный атрибут является свойством класса Application. Как и другие свойства, его можно настроить либо непосредственно в тексте xaml-файла, либо в окне свойств Properties, которое отображает доступные для редактирования свойства текущего объекта из xamlфайла (если в редакторе отображается не xaml-, а cs-файл, то окно Properties является пустым). При указании или изменении свойств в xaml-файле очень помогает предусмотренная в редакторе xaml-файлов возможность контекстной подсказки при выборе значений свойств. Окно Properties удобно в том отношении, что позволяет просмотреть все доступные свойства текущего объекта. В xaml-файле отображаются только те свойства, значения которых
отличаются от значений по умолчанию для данного объекта. Чтобы добавить в xaml-файл новое свойство, достаточно в окне Properties указать для данного свойства значение, отличное от значения по умолчанию. В процессе компиляции программы все xaml-файлы конвертируются в специальный двоичный формат и затем обрабатываются совместно с csфайлами проекта. Класс App обычно не требуется редактировать. По этой причине после создания проекта в редактор не загружаются файлы, связанные с классом App. Комментарий На протяжении всей книги мы будем придерживаться следующих со глашений об отступах в текстах xaml- и cs-файлов. В xaml-файле каждый вложенный элемент набирается с отступом в 2 пробела относительно родительского элемента (причина столь небольшого отступа заключается в том, что глубина вложенности элементов в xaml-файлах может быть достаточно большой); если список атрибутов в открывающем теге элемента не умещается в одной строке, то он переносится на следующую строку с отступом в 4 пробела относительно начала открывающего тега. Для cs-файла ситуация обратная: вложенные конструкции набираются с отступом в 4 пробела (как в редакторе кода среды Visual Studio), а при переносе длинного оператора на новую строку используется отступ в 2 пробела. Приведем файлы, связанные с классом MainWindow; именно эти фай лы автоматически загружаются в редактор после создания (или открытия) проекта. MainWindow.xaml: <Window x:Class="EVENTS.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:local="clr-namespace:EVENTS" mc:Ignorable="d" Title="MainWindow" Height="350" Width="525"> <Grid> </Grid> </Window> MainWindow.xaml.cs: using System; using System.Collections.Generic; using System.Linq;
Доступ онлайн
В корзину