Розробка програми WPF
Розробка програми WPF(лаб)
У процесі виконання роботи необхідно розробити сторінковий/віконний додаток WPF.
Завдання 1. Створити проект програми WPF
Для розробки програми необхідно створити WPF-проект (рис. 6.1). У вікні "Створити проект" необхідно перевірити установку бібліотеки.NET Framework 4(1 – нарис. 6.1), вибрати шаблони Windows (2 – на>мал.

збільшити зображенняМал. 6.1.Вікно створення проекту
Після натискання кнопки "ОК" буде сформовано шаблон проекту. При цьому інструментальна система згенерує наступнийXAML-документ:
Дизайнер проекту наведено на рис. 6.2 .

збільшити зображенняМал. 6.2.Вікно дизайнера проекту
У наведеномуXAML-документі є один елемент верхнього рівня. Дескриптор завершує весь документ. УXAML-документі наведено ім'я класуMainWindow
два простори імен
Title="MainWindow" Height="350" Width="525"
Кожен атрибут відповідає певному властивості класуWindow. Наведені атрибути наказують WPF створити вікно з написомMainWindowта розміром 350х525 одиниць. При компіляції та запуску проекту програми на дисплей виводиться вікно, наведене на мал. 6.3 .

Мал. 6.3.Вікно MainWindow проекту
МетодInitializeComponent()генерується під час компіляції програми і у вихідному коді немає.
Для програмного керування елементами керування,описані вXAML-документі, необхідно задатиXAMLатрибутName. Так для завдання імені елементуGridнеобхідно записати таку розмітку:
Сторінки програми можна розміщувати всередині вікон та всередині інших сторінок. У WPF при створенні сторінкових додатків контейнером найвищого рівня можуть бути такі об'єкти:
NavigationWindow, який є дещо видозміненою версією класуWindow;
Frame, що знаходиться всередині іншого вікна або іншої сторінки;
Frame, що обслуговується безпосередньо вInternet Explorer.
Для вставки сторінки у вікно будемо використовувати класFrame(рис. 6.4). Автоматично буде згенеровано екземпляр класуFrameз фіксованими межамирис. 6.5).

збільшити зображенняМал. 6.4.Вибір класу Frame на панелі інструментів

Мал. 6.5.Фрейм із фіксованими кордонами
УXAML-документ проекту буде додано наступний рядок:
З урахуванням того, що створюється сторінковий додаток, розміри кадру не потрібно фіксувати, тому змінимо опис властивостей кадру:
В результаті кадр заповнить все вікно (рис. 6.6):

збільшити зображенняМал. 6.6.Фрейм, що заповнює все вікно
Створений кадр необхідний для розміщення в ньому сторінки WPF-програми. КласPageдопускає наявність лише одного вкладеного елемента. Він не є елементом керування вмістом і успадковується від класуFrameworkElement. КласPageмає невеликий набір додаткових властивостей, які дозволяють налаштовувати його зовнішній вигляд, взаємодіяти з контейнером та використовувати навігацію. Для переходу наіншу сторінку потрібно використовувати навігацію.
Додайте до проекту початкову сторінку. Для цього уОбозревателе решенийклацніть правою кнопкою миші на проектіWpfApplProject. У контекстному меню виберіть пунктДодати(1 – нарис. 6.8), а в меню - пунктСторінка(2 нарис. 6.7).
У вікніДодавання нового елементанеобхідно вибрати шаблон "Сторінка (WPF)" (1) і задати ім'я сторінкиPageMain(2 нарис. 6.8).

збільшити зображенняМал. 6.7.Меню створення сторінки

збільшити зображенняМал. 6.8.Вікно Додавання нового елемента
У дизайнері проекту згенерується сторінкаPageMain.xaml(рис. 6.9).

збільшити зображенняМал. 6.9.Дизайнер сторінки PageMain.xaml
У згенерованій сторінці як контейнер верхнього рівня використовуєтьсяGrid. ЗамінітьGridна контейнерStackPanel.
Головна сторінкапрограми в дизайнері представлена нарис. 6.10.

Мал. 6.10.Головна сторінка WPF-додатки в дизайнері
Змініть властивістьTitleвікна класуWindow, відповідно до варіанта лабораторної роботи.
Основна сторінка повинна забезпечувати перехід на інші сторінки, які забезпечують інтерфейс для окремих функцій та вихід із системи. Для переходу на інші сторінки використовуйте гіперпосилання. Гіперпосилання дозволяють користувачеві переміщатися з однієї сторінки на іншу. Елемент гіперпосилання, що відповідає об'єкту класуHyperlink, визначається наступним рядком:
КласHyperlinkмає властивістьNavigateUri. Ця властивість визначає на якусторінку буде переходити програму при натисканні на відповідному гіперпосиланні. Наприклад,NavigateUri="Page2.xaml".
У WPF гіперпосилання є не окремими, а внутрішньорядковими потоковими елементами, які повинні розміщуватися всередині іншого елемента, що підтримує їх. Це можна зробити, наприклад, у елементіTextBlock, який для гіперпосилання є контейнером.
На першій сторінці створіть гіперпосилання для переходу на сторінки програми, відповідно до завдання.
Створення основного меню. Створіть основне меню за допомогою класуMenu, який представляєWindowsелементи керування меню, що дозволяють ієрархічно організувати елементи, пов'язані з командами та обробниками подій. Меню формують з об'єктівMenuItem(ім'я пункту меню) таSeparator(розділювач). КласMenuItemмає властивістьHeader, яка визначає текст елемента меню. Цей клас може зберігати колекцію об'єктівMenuItem, яка відповідає підпунктам меню. КласSeparatorвідображає горизонтальну лінію, яка розділяє пункти меню.
Додайте вStackPanelсторінки програмиXAML- опис меню, яке на верхньому рівні міститиме, наприклад два пунктиДіятаЗвіт. ПунктДіявключає підпунктиСкасувати, Створити, Редагувати, Зберегти, ЗнайтитаВидалити. Додайте розділові лінії між пунктамиСкасувати, Створитита пунктамиЗнайти, Видалити.
Створення панелі інструментів. Панель інструментів являє собою спеціалізований контейнер для зберігання колекції елементів, зазвичай кнопок. Розташуйте в панелі інструментів кнопки, функціональне призначення яких відповідатиме підпунктам менюДія, тобтоСкасувати, Створити, Редагувати, Зберегти, ЗнайтитаВидалити.
На лицьовій стороні кнопок помістіть графічне зображення відповідної дії. Для цього додайте до файлу проекту папкуImagesі до неї увімкніть графічні об'єкти, які можна знайти в бібліотеці графічних об'єктів Visual Studio (папка VS2010ImageLibrary).
Після додавання графічних файлів у проект вони будуть відображені в браузері рішень (рис. 6.11).

Мал. 6.11.Включення в проект папки Images із файлами малюнків
Для кожної кнопки задайте властивістьName– ім'я об'єкта в програмі та властивістьToolTipз текстом підказки при наведенні покажчика миші на кнопку.
ВластивістьMarginвизначаєзовнішні відступидля кнопки. Завдання графічного об'єкта для кнопки здійснюється визначенням об'єктаImageджерелаSource, який повинен відповідати повному шляху до графічного файлу.
Проектування інтерфейсних елементів. При проектуванні інтерфейсних елементів для сторінки програми використовуються елементи контролюListBox, ListView, TextBox, TextBlock, ComboBox, DataGridта інших.
КласDataGridпредставляє елемент управління, що відображає дані в сітці рядків і стовпців, що настроюється. За умовчаннямDataGridавтоматично створює стовпці на основі джерела даних. При цьому генеруються такі типи стовпців:
DataGridTextColomn– для відображення в осередках стовпців текстового вмісту;
DataGridCheckBoxColomn- для відображення в осередках стовпців логічних даних;
DataGridComboBoxColomn– для відображення в осередках стовпців даних, коли є набір елементів для вибору;
DataGridHyperlinkColomn– для відображення в осередках стовпців елементівUri.
Якщо розробника не влаштовує автоматична генерація шпальтDataGridможна її вимкнути. Для цієї властивостіAutoGenerateColumnsнеобхідно надати значенняfalse. Далі можна створити власний набір стовпців (Columns), використовуючи існуючі типи стовпців або створити новий тип стовпця за допомогою шаблонуDataGridTemplateColumn.
DataGridпідтримує безліч способів налаштування відображення даних.