Українська
Завдання
Відповідно до номера свого варіанта виконайте завдання обраного рівня складності.
Варіанти
Варіант 1. Бюджет сім’ї
1. Початковий рівень. Створити застосунок WPF, у якому витрати (стаття, сума) додаються з полів у ObservableCollection<T> і показуються в DataGrid, а напис, прив’язаний до ViewModel, показує загальну суму у форматі N2.
2. Базовий рівень. Створити застосунок WPF за патерном MVVM для обліку витрат сім’ї (стаття, категорія, сума) з вибором категорії у ComboBox, перевіркою суми (0,01–1 000 000 грн) через INotifyDataErrorInfo, фільтром за категорією (ICollectionView) і смужками частки кожної категорії (ProgressBar, прив’язаний до відсотка).
3. Високий рівень. Створити застосунок WPF «Бюджет сім’ї» на CommunityToolkit.Mvvm для обліку витрат (дата, стаття, категорія, сума) з ViewModel в окремій бібліотеці, сервісом збереження витрат у файл JSON, зареєстрованим у ServiceCollection, командами додавання, видалення й звіту за місяць та модульними тестами ViewModel (підсумки, фільтр, недоступність команд).
Варіант 2. Каталог настільних ігор
1. Початковий рівень. Створити застосунок WPF, який показує список настільних ігор (назва, жанр, кількість гравців, ціна) у ListBox з DataTemplate у вигляді карток і деталі вибраної гри поруч, прив’язані до SelectedItem.
2. Базовий рівень. Створити застосунок WPF за патерном MVVM «Каталог ігор» зі списком настільних ігор (назва, жанр, кількість гравців, ціна), пошуком за назвою під час введення (UpdateSourceTrigger=PropertyChanged, Delay), групуванням за жанром через ICollectionView, сортуванням за ціною або назвою (ComboBox) і лічильником показаних ігор.
3. Високий рівень. Створити застосунок WPF «Каталог настільних ігор» на CommunityToolkit.Mvvm, який завантажує ігри (назва, жанр, кількість гравців, ціна) з файлу JSON, розміщує картки у WrapPanel (ItemsPanelTemplate), фільтрує й сортує їх, додає й редагує ігри в модальному вікні з валідацією, зберігає зміни командою і має тести ViewModel для фільтра й сортування.
Варіант 3. Реєстрація на марафон
1. Початковий рівень. Створити застосунок WPF з формою реєстрації (ім’я, рік народження, дистанція 5, 10 або 42 км), прив’язаною до ViewModel з INotifyPropertyChanged, і написом-підсумком, який оновлюється під час введення.
2. Базовий рівень. Створити застосунок WPF за патерном MVVM для реєстрації учасників марафону з валідацією INotifyDataErrorInfo (ім’я не коротше 2 символів, вік 16–80 років на дату старту, телефон за шаблоном), власним Validation.ErrorTemplate і командою Register, недоступною за наявності помилок.
3. Високий рівень. Створити застосунок WPF «Марафон» на CommunityToolkit.Mvvm (ObservableValidator) для реєстрації учасників (ім’я, дата народження, телефон, дистанція 5, 10 або 42 км) з валідацією полів, який зберігає список учасників у файл JSON, не допускає повторної реєстрації за телефоном, показує статистику за дистанціями й віковими групами та має модульні тести правил валідації.
Варіант 4. Трекер читання книг
1. Початковий рівень. Створити застосунок WPF, у якому для книги задаються кількість сторінок і прочитані сторінки (Slider), а ProgressBar і напис з відсотком прив’язані до ViewModel.
2. Базовий рівень. Створити застосунок WPF за патерном MVVM зі списком книг (назва, автор, кількість сторінок, прочитані сторінки), у шаблоні даних яких показано назву, автора, ProgressBar прогресу й відсоток через власний IValueConverter; завершені книги виділяються тригером даних DataTrigger.
3. Високий рівень. Створити застосунок WPF «Трекер читання» на CommunityToolkit.Mvvm зі списком книг (назва, автор, кількість сторінок) і журналом сесій читання (дата, сторінки), обчисленням прогресу, темпу й прогнозу дати завершення, збереженням у файл JSON через сервіс, впроваджений у ViewModel, і тестами обчислень.
Варіант 5. Менеджер паролів
1. Початковий рівень. Створити застосунок WPF, який показує список облікових записів (сайт, логін, пароль) з паролем, прихованим конвертером (••••••), і кнопкою Show, яка показує пароль вибраного запису.
2. Базовий рівень. Створити застосунок WPF за патерном MVVM для зберігання облікових записів (сайт, логін, пароль) зі списком із прихованими паролями, формою додавання на ObservableValidator (сайт обов’язковий, пароль від 8 символів), індикатором надійності пароля і командою копіювання пароля в буфер обміну.
3. Високий рівень. Створити застосунок WPF «Менеджер паролів» на CommunityToolkit.Mvvm для облікових записів (сайт, логін, пароль) з генератором паролів за параметрами, пошуком, збереженням даних у файл, зашифрований за допомогою ProtectedData (сервіс за інтерфейсом), і тестами ViewModel з фейковим сервісом.
Варіант 6. Розклад спортзалу
1. Початковий рівень. Створити застосунок WPF, який показує тренування на тиждень (день, час, вид, тренер) у ListBox з шаблоном даних і неявним стилем для текстових блоків.
2. Базовий рівень. Створити застосунок WPF за патерном MVVM «Розклад спортзалу» зі списком тренувань на тиждень (день, час, вид, тренер, тип), у якому DataTemplateSelector обирає окремий шаблон для групових, персональних і кардіотренувань, а фільтр за днем тижня використовує ICollectionView.
3. Високий рівень. Створити застосунок WPF «Спортзал» на CommunityToolkit.Mvvm з розкладом тренувань (день, час, вид, тренер, кількість місць) і записом на тренування (обмеження кількості місць, команда недоступна для заповнених груп), навігацією між сторінками розкладу й записів через DataTemplate і тестами правил запису.
Варіант 7. Квитки техпідтримки
1. Початковий рівень. Створити застосунок WPF зі списком звернень (номер, тема, статус), у якому рядки зі статусом Open виділяються жирним шрифтом за допомогою DataTrigger.
2. Базовий рівень. Створити застосунок WPF за патерном MVVM для обліку звернень техпідтримки (номер, тема, пріоритет, статус, дата) з DataGrid, фільтрами за статусом і пріоритетом, сортуванням за датою та командами зміни статусу, доступність яких залежить від поточного статусу.
3. Високий рівень. Створити застосунок WPF «Служба підтримки» на CommunityToolkit.Mvvm для звернень (номер, тема, пріоритет, статус, дата) зі списком і карткою деталей звернення, історією змін статусу, збереженням у файл JSON, повідомленням WeakReferenceMessenger про зміну статусу для панелі статистики і тестами ViewModel.
Варіант 8. Нотатки з тегами
1. Початковий рівень. Створити застосунок WPF, у якому нотатки (заголовок, текст, теги через кому) показуються в ListBox, а вибрана нотатка редагується в полях з прив’язкою TwoWay.
2. Базовий рівень. Створити застосунок WPF за патерном MVVM для нотаток (заголовок, текст, теги, дата) з редагуванням вибраної нотатки, пошуком за тегом, заголовком нотатки у списку, сформованим MultiBinding із заголовка й дати, і перемиканням світлої та темної теми через заміну ResourceDictionary.
3. Високий рівень. Створити застосунок WPF «Нотатки» на CommunityToolkit.Mvvm для нотаток (заголовок, текст, теги) з редагуванням, хмарою тегів (WrapPanel кнопок-тегів із власним ControlTemplate) для фільтрації, збереженням нотаток у файли, автозбереженням після змін і тестами пошуку за тегами.
Варіант 9. Кредитний калькулятор
1. Початковий рівень. Створити застосунок WPF, у якому сума, ставка й строк кредиту прив’язані до ViewModel, а щомісячний ануїтетний платіж перераховується одразу після зміни будь-якого значення.
2. Базовий рівень. Створити застосунок WPF за патерном MVVM для розрахунку кредиту за сумою, річною ставкою і строком у місяцях з валідацією полів, графіком ануїтетних платежів (місяць, платіж, тіло, відсотки, залишок) у DataGrid і форматуванням сум за регіональними налаштуваннями (перевизначення FrameworkElement.Language).
3. Високий рівень. Створити застосунок WPF «Кредитний калькулятор» на CommunityToolkit.Mvvm, який за сумою, ставкою і строком будує графіки платежів і порівнює дві схеми погашення (ануїтетна й рівними частинами), з експортом графіка у CSV через сервіс, впроваджений у ViewModel, і модульними тестами розрахунків на відомих прикладах.
Варіант 10. Облік складу магазину
1. Початковий рівень. Створити застосунок WPF зі списком товарів (назва, кількість, мінімальний залишок), у якому товари з кількістю, меншою за мінімальний залишок, виділяються стилем через DataTrigger і конвертер.
2. Базовий рівень. Створити застосунок WPF за патерном MVVM для обліку складу магазину (товари: назва, категорія, кількість, мінімальний залишок) з пошуком, групуванням за категорією (ICollectionView), командами надходження та списання з перевіркою кількості і написом з кількістю дефіцитних товарів.
3. Високий рівень. Створити застосунок WPF «Склад» на CommunityToolkit.Mvvm для товарів (назва, категорія, кількість, мінімальний залишок) з командами надходження й списання, журналом операцій, звітом про дефіцит, збереженням даних у файл JSON через сервіс, зареєстрований у ServiceCollection, і тестами команд надходження та списання.
Варіант 11. Меню кав’ярні
1. Початковий рівень. Створити застосунок WPF, який показує меню кав’ярні кнопками з власним ControlTemplate (назва й ціна), а натискання кнопки додає позицію до кошика.
2. Базовий рівень. Створити застосунок WPF за патерном MVVM «Кав’ярня» з меню (назва, ціна; задано в коді) у вигляді кнопок із власним шаблоном, кошиком (кількість позицій змінюється командами + і − з параметром), підсумком замовлення, знижкою за кодом і тригерами наведення та натискання в шаблоні кнопок.
3. Високий рівень. Створити застосунок WPF «Кав’ярня» на CommunityToolkit.Mvvm з меню, завантаженим із файлу JSON, оформленням замовлення, історією замовлень за день, перемиканням тем оформлення й модульними тестами обчислення вартості та знижок.
Варіант 12. Журнал відвідуваності
1. Початковий рівень. Створити застосунок WPF з DataGrid студентів групи, у якому стовпець DataGridCheckBoxColumn позначає присутність, а напис показує кількість присутніх.
2. Базовий рівень. Створити застосунок WPF за патерном MVVM для журналу відвідуваності кількох занять: вибір групи й дати заняття, DataGrid студентів з позначкою присутності, відсоток відвідування кожного студента й виділення студентів з відвідуваністю нижче 60 % через DataTrigger.
3. Високий рівень. Створити застосунок WPF «Журнал відвідуваності» на CommunityToolkit.Mvvm (групи, студенти, заняття з датою, позначки присутності) зі збереженням даних у файл JSON, відсотком відвідування студентів, статистикою за групами, експортом у CSV через сервіс і тестами обчислення відсотків.
Варіант 13. Трекер настрою
1. Початковий рівень. Створити застосунок WPF, у якому настрій дня обирається однією з п’яти кнопок-емоцій з однаковим стилем, а вибраний настрій і коментар показуються в списку історії.
2. Базовий рівень. Створити застосунок WPF за патерном MVVM «Трекер настрою» з кнопками-емоціями (п’ять рівнів настрою) на ToggleButton з власним шаблоном, полем коментаря, історією за датами в ListBox з шаблоном даних і середнім настроєм за тиждень.
3. Високий рівень. Створити застосунок WPF «Трекер настрою» на CommunityToolkit.Mvvm, у якому щодня обирається настрій (1–5) з коментарем, з графіком-смужками настрою за місяць (ItemsControl з прив’язаною висотою), збереженням історії у файл і тестами статистики.
Варіант 14. Картотека фільмів
1. Початковий рівень. Створити застосунок WPF із master-detail відображенням фільмів: список назв ліворуч і деталі вибраного фільму (рік, жанр, рейтинг) праворуч.
2. Базовий рівень. Створити застосунок WPF за патерном MVVM «Картотека фільмів» (назва, рік, жанр, рейтинг) з master-detail відображенням, пошуком, сортуванням за рейтингом і роком, редагуванням деталей з валідацією рейтингу (1–10) і командою видалення з підтвердженням.
3. Високий рівень. Створити застосунок WPF «Фільмотека» на CommunityToolkit.Mvvm зі списком і деталями фільмів (назва, рік, жанр, рейтинг), який асинхронно завантажує фільми з файлу JSON командою зі скасуванням, показує індикатор IsRunning, зберігає зміни й має тести ViewModel з фейковим сервісом завантаження.
Варіант 15. Показники лічильників
1. Початковий рівень. Створити застосунок WPF, у якому для лічильника води вводяться попередній і поточний показники, а обсяг споживання й вартість за тарифом обчислюються у ViewModel.
2. Базовий рівень. Створити застосунок WPF за патерном MVVM для показників лічильників води, газу й електроенергії (дата, показник, споживання, вартість за тарифом) з перевіркою, що новий показник не менший за попередній (INotifyDataErrorInfo), і таблицею історії в DataGrid.
3. Високий рівень. Створити застосунок WPF «Комунальні лічильники» на CommunityToolkit.Mvvm для показників води, газу й електроенергії з перевіркою, що новий показник не менший за попередній, розрахунком споживання й вартості за тарифами, звітом за рік, збереженням показників і тарифів у файл JSON через сервіс і тестами правил валідації та розрахунку вартості.
Варіант 16. Kanban-дошка
1. Початковий рівень. Створити застосунок WPF з трьома колонками To Do, In Progress, Done, кожна з яких – ItemsControl, прив’язаний до окремої ObservableCollection<T> завдань.
2. Базовий рівень. Створити застосунок WPF за патерном MVVM «Kanban» з колонками To Do, In Progress, Done (ItemsControl з колекціями завдань), командами переміщення вибраного завдання між колонками (параметр команди – завдання), обмеженням кількості завдань у колонці In Progress і лічильниками в заголовках колонок.
3. Високий рівень. Створити застосунок WPF «Kanban-дошка» на CommunityToolkit.Mvvm з колонками To Do, In Progress, Done, картками завдань (назва, пріоритет, виконавець, термін), командами переміщення, виділенням прострочених завдань тригером, збереженням дошки у файл JSON і тестами команд переміщення.
Варіант 17. Кулінарна книга
1. Початковий рівень. Створити застосунок WPF зі списком рецептів і деталями вибраного рецепта (інгредієнти та кроки), показаними через шаблони даних.
2. Базовий рівень. Створити застосунок WPF за патерном MVVM «Кулінарна книга» (рецепти з інгредієнтами й кроками), у якому список рецептів і панель деталей мають окремі ViewModel, а вибір рецепта передається повідомленням WeakReferenceMessenger.
3. Високий рівень. Створити застосунок WPF «Кулінарна книга» на CommunityToolkit.Mvvm (рецепти з кількістю порцій, інгредієнтами з кількістю й одиницею та кроками) з перерахунком інгредієнтів на задану кількість порцій, пошуком за інгредієнтом, збереженням у файл JSON і тестами перерахунку.
Варіант 18. Конвертер валют
1. Початковий рівень. Створити застосунок WPF, у якому сума і валюти «з» і «в» прив’язані до ViewModel, а результат за курсами, заданими в програмі, оновлюється під час введення.
2. Базовий рівень. Створити застосунок WPF за патерном MVVM «Конвертер валют», у якому сума й валюти «з» і «в» прив’язані до ViewModel, а результат перераховується під час введення, з асинхронною командою оновлення курсів із сервісу (імітація затримки Task.Delay), індикатором виконання й кнопкою скасування.
3. Високий рівень. Створити застосунок WPF «Обмінник» на CommunityToolkit.Mvvm, який конвертує введену суму між двома валютами за курсами з вебсервісу через HttpClient, зареєстрований у ServiceCollection, обробляє помилки мережі, зберігає останні курси у файл і має тести ViewModel з фейковим сервісом курсів.
Варіант 19. Автомобілі сім’ї
1. Початковий рівень. Створити застосунок WPF зі списком автомобілів (марка, номер, пробіг, дата ТО) і деталями вибраного автомобіля, прив’язаними до SelectedItem.
2. Базовий рівень. Створити застосунок WPF за патерном MVVM для обліку автомобілів сім’ї (марка, номер, пробіг, дата ТО), у якому DataTrigger виділяє автомобілі з ТО, що настає протягом 14 днів або прострочене, а пробіг і дата перевіряються INotifyDataErrorInfo.
3. Високий рівень. Створити застосунок WPF «Гараж» на CommunityToolkit.Mvvm для автомобілів (марка, номер, пробіг) з журналом обслуговування кожного автомобіля (дата, пробіг, роботи), нагадуваннями за пробігом і датою, збереженням у файл JSON і тестами правил нагадувань.
Варіант 20. Словник-тренажер
1. Початковий рівень. Створити застосунок WPF, який показує слово англійською, приймає переклад і після натискання кнопки з командою повідомляє, чи відповідь правильна.
2. Базовий рівень. Створити застосунок WPF за патерном MVVM «Словник-тренажер» зі списком слів і перекладів, заданим у коді, картками слів для перекладу, статистикою правильних і неправильних відповідей, командою Next, недоступною до перевірки відповіді, і стилем повідомлення, що змінюється тригером.
3. Високий рівень. Створити застосунок WPF «Тренажер слів» на CommunityToolkit.Mvvm, який показує слова для перекладу й перевіряє відповіді, частіше повторює слова з помилками, завантажує словник (слово, переклад) з файлу через сервіс і має модульні тести ViewModel з фіксованим генератором випадкових чисел.
Варіант 21. Замовлення друкарні
1. Початковий рівень. Створити застосунок WPF з DataGrid замовлень друкарні (клієнт, виріб, тираж, статус), у якому стиль рядка залежить від статусу.
2. Базовий рівень. Створити застосунок WPF за патерном MVVM для замовлень друкарні (клієнт, виріб, тираж, дата готовності, статус) з формою додавання (тираж 1–100 000, дата готовності не раніше ніж завтра), фільтрами за статусом і клієнтом та розрахунком вартості за тарифами.
3. Високий рівень. Створити застосунок WPF «Друкарня» на CommunityToolkit.Mvvm для замовлень (клієнт, виріб, тираж, дата, статус, вартість за тарифами) з перемиканням статусів командами, звітом за період, збереженням у файл JSON через сервіс і тестами розрахунку вартості та переходів статусів.
Варіант 22. Журнал погоди
1. Початковий рівень. Створити застосунок WPF, у якому спостереження (дата, температура, опади) додаються з полів у список, а напис показує середню температуру.
2. Базовий рівень. Створити застосунок WPF за патерном MVVM «Журнал погоди» для спостережень (дата, температура, опади) з перевіркою діапазонів (температура −60…+60 °C, опади 0–500 мм), групуванням спостережень за місяцями через ICollectionView і підсумками для кожного місяця.
3. Високий рівень. Створити застосунок WPF «Метеожурнал» на CommunityToolkit.Mvvm для спостережень (дата, температура, опади) з імпортом із CSV-файлу (рядки з помилками пропускаються зі звітом), графіком температур-смужками і тестами статистики.
Варіант 23. Бронювання кімнат гуртожитку
1. Початковий рівень. Створити застосунок WPF зі списком кімнат (номер, місць, вільних місць), у якому кімнати без вільних місць показані сірим кольором через DataTrigger.
2. Базовий рівень. Створити застосунок WPF за патерном MVVM для поселення в гуртожиток (master-detail: кімнати з номером і кількістю місць та їх мешканці), у якому команда поселення недоступна для заповненої кімнати, а команда виселення – без вибраного мешканця.
3. Високий рівень. Створити застосунок WPF «Гуртожиток» на CommunityToolkit.Mvvm (кімнати з кількістю місць і статтю, мешканці з курсом) з командами поселення й виселення, правилами поселення (стать кімнати, курс), історією переселень, збереженням у файл JSON і тестами CanExecute команд.
Варіант 24. Волонтерські зміни
1. Початковий рівень. Створити застосунок WPF зі списком волонтерських змін (дата, місце, потрібно людей) і полем імені волонтера, де команда Join додає волонтера до вибраної зміни.
2. Базовий рівень. Створити застосунок WPF за патерном MVVM для запису на волонтерські зміни (дата, час, місце, потрібно людей) з обмеженням кількості людей, перевіркою накладання змін для одного волонтера і сторінками «Зміни» та «Мої записи», які перемикає ContentControl.
3. Високий рівень. Створити застосунок WPF «Волонтери» на CommunityToolkit.Mvvm для запису волонтерів на зміни (дата, час, місце, кількість людей) з DI сервісів збереження й звітів у App.OnStartup, навігацією між ViewModel через DataTemplate і модульними тестами правил запису (ліміт людей, накладання змін).
Варіант 25. Плейлист
1. Початковий рівень. Створити застосунок WPF зі списком треків (назва, виконавець, тривалість) і написом із загальною тривалістю плейлиста у форматі hh:mm:ss.
2. Базовий рівень. Створити застосунок WPF за патерном MVVM «Плейлист» зі списком треків (назва, виконавець, тривалість у секундах), командами Up, Down, Remove для вибраного треку, сортуванням за назвою або тривалістю та конвертером секунд у формат mm:ss (без відтворення звуку).
3. Високий рівень. Створити застосунок WPF «Плейлисти» на CommunityToolkit.Mvvm з кількома плейлистами треків (назва, виконавець, тривалість), командами зміни порядку, перенесенням треків між плейлистами, збереженням у файл JSON, перемиканням тем і тестами команд зміни порядку.
Варіант 26. Анкета опитування
1. Початковий рівень. Створити застосунок WPF, який показує питання анкети з варіантами відповіді (RadioButton) через шаблон даних і кнопку Next для переходу до наступного питання.
2. Базовий рівень. Створити застосунок WPF за патерном MVVM «Опитування» з питаннями, заданими в коді, у якому DataTemplateSelector обирає шаблон для питань з одним варіантом, кількома варіантами та вільною відповіддю, а Finish доступна після відповіді на всі питання.
3. Високий рівень. Створити застосунок WPF «Конструктор опитувань» на CommunityToolkit.Mvvm, який завантажує анкету з файлу JSON, зберігає відповіді, показує підсумки за кожним питанням і має тести перевірки заповнення.
Варіант 27. Витрати пального
1. Початковий рівень. Створити застосунок WPF, у якому пройдена відстань і витрачене пальне прив’язані до ViewModel, а витрата на 100 км обчислюється під час введення.
2. Базовий рівень. Створити застосунок WPF за патерном MVVM для обліку заправок (дата, відстань, літри) з обчисленням витрати, вибором одиниць (л/100 км, км/л, MPG), перетворенням через IValueConverter з параметром і валідацією значень.
3. Високий рівень. Створити застосунок WPF «Пальне» на CommunityToolkit.Mvvm з журналом заправок (дата, відстань, літри, ціна) кількох автомобілів, витратою в різних одиницях, статистикою вартості за місяць, збереженням у файл JSON і тестами обчислень і конвертерів.
Варіант 28. Дні народження друзів
1. Початковий рівень. Створити застосунок WPF зі списком друзів (ім’я, дата народження), у якому шаблон даних показує кількість днів до наступного дня народження.
2. Базовий рівень. Створити застосунок WPF за патерном MVVM «Дні народження» зі списком друзів (ім’я, дата народження) і кількістю днів до свята, сортуванням за найближчою датою через ICollectionView, виділенням іменинників сьогодні й протягом тижня тригерами та формою додавання з валідацією.
3. Високий рівень. Створити застосунок WPF «Календар друзів» на CommunityToolkit.Mvvm зі списком друзів (ім’я, дата народження) і кількістю днів до наступного дня народження, групуванням за місяцями, абстракцією поточної дати TimeProvider, збереженням у файл JSON і тестами обчислення днів до свята, зокрема для 29 лютого.
Варіант 29. Комп’ютерні комплектуючі
1. Початковий рівень. Створити застосунок WPF, у якому процесор і материнська плата обираються з ComboBox, а загальна вартість збірки обчислюється у ViewModel.
2. Базовий рівень. Створити застосунок WPF за патерном MVVM «Конфігуратор ПК» з каталогом комплектуючих, заданим у коді (процесори із сокетом, материнські плати із сокетом і типом пам’яті, модулі пам’яті; ціни), вибором у ComboBox, вартістю збірки, перевіркою сумісності сокета й типу пам’яті, попередженням, яке показує DataTrigger, і командою Order, недоступною для несумісної збірки.
3. Високий рівень. Створити застосунок WPF «Конфігуратор ПК» на CommunityToolkit.Mvvm з каталогом комплектуючих (тип, назва, сокет, тип пам’яті, потужність, ціна) із файлу JSON, вибором збірки з вартістю, перевіркою сумісності та потужності блока живлення, збереженням збірок і тестами правил сумісності.
Варіант 30. Шкільна олімпіада
1. Початковий рівень. Створити застосунок WPF зі списком учасників олімпіади (ім’я, клас, бали) і написом із середнім балом, прив’язаним до ViewModel.
2. Базовий рівень. Створити застосунок WPF за патерном MVVM «Олімпіада» для учасників (ім’я, клас) і їхніх балів за завдання зі сторінками «Учасники», «Бали» та «Результати», між якими перемикає ContentControl з неявними шаблонами даних, і рейтингом переможців за класами.
3. Високий рівень. Створити застосунок WPF «Шкільна олімпіада» на CommunityToolkit.Mvvm (учасники з класом, бали за завдання, рейтинг) з DI сервісів, навігацією між ViewModel, валідацією балів за завданнями, збереженням у файл JSON і тестами визначення переможців із рівними балами.
Порядок виконання та захисту роботи
- Опрацювати теоретичні відомості та приклади розв’язання завдань.
- Спроєктувати ViewModel: властивості зі сповіщенням, колекції, команди з умовами
CanExecute, правила валідації; намалювати ескіз вікна. - Створити у Visual Studio 2026 проєкт WPF Application (.NET 10), для базового та високого рівнів – бібліотеку класів для Model і ViewModel; підключити CommunityToolkit.Mvvm.
- Описати вікно розміткою XAML з прив’язками, шаблонами даних, стилями й ресурсами; code-behind залишити мінімальним.
- Для високого рівня зареєструвати сервіси й ViewModel у
ServiceCollectionі покрити ViewModel модульними тестами xUnit.net v3. - Зібрати рішення без попереджень, перевірити відсутність помилок у вікні XAML Binding Failures і роботу застосунку на коректних і некоректних даних.
- Продемонструвати роботу застосунку й тести викладачеві, пояснити код і відповісти на контрольні питання.