Разработка универсальных приложений.pptx
- Количество слайдов: 21
Разработка универсальных Windows Store приложений Эльдар Дорджиев Microsoft Student Partner eldardordzhiev@gmail. com
Краткое вступление
Разбираемся с API • Windows Phone 7 • Silverlight (C#) • XNA (C#) • Windows Phone 8 • Silverlight (C#) • Direct. X (C++) • Windows Phone 8. 1 • Windows Runtime (C#/C++) • Direct. X (C++) • Silverlight (C#) • До Windows 8 • Не было Windows Store • Windows 8 и 8. 1 • Windows Runtime (C#/C++/JS) • Direct. X (C++)
Что такое Universal Apps? • Возможность легко переиспользовать код • Купив приложение для одной платформы, пользователь получает его и для других платформ • То же самое касается и покупок внутри приложений (inapp purchases) • Автоматический перенос настроек и данных между платформами (data roaming) • Общий канал push-уведомлений
Совместное использование кода
Какие есть варианты? Solution 'App 1' App 1_Phone 81 Class 1. cs Page 1. xaml App. xaml Asset 1. png App 1_Windows 81 Class 1. cs Page 1. xaml App. xaml Asset 1. png Solution 'App 1' App 1_Phone 81 References App 1_Shared App 1_Windows 81 References App 1_Shared Class 1. cs Page 1. xaml App. xaml Asset 1. png Solution 'App 1' App 1_Phone 81 References App 1_PCL App. xaml App 1_Windows 81 References App 1_PCL App. xaml App 1_PCL Class 1. cs Page 1. xaml Asset 1. png Linked files Shared Projects Portable Class Library
Linked files Solution 'App 1' App 1_Phone 81 Class 1. cs Page 1. xaml App. xaml Asset 1. png App 1_Windows 81 Class 1. cs Page 1. xaml App. xaml Asset 1. png • Одна копия файлов для всех проектов • Project -> Add -> Existing Item… -> Add As Link • Очень долго и нудно добавлять каждый файл • То же самое касается и создания новых • В общем, не самый удобный вариант
Portable Class Library Solution 'App 1' App 1_Phone 81 References App 1_PCL App. xaml App 1_Windows 81 References App 1_PCL App. xaml App 1_PCL Class 1. cs Page 1. xaml Asset 1. png • Отдельная сборка для общего кода • Большой выбор платформ • Доступны только общие для выбранных платформ API • Не самый лучший вариант для переиспользования UI кода
Shared Project Solution 'App 1' App 1_Phone 81 References App 1_Shared App 1_Windows 81 References App 1_Shared Class 1. cs Page 1. xaml App. xaml Asset 1. png • Лучший способ для Windows Runtime приложений • Общие файлы размещаются в отдельном проекте (Shared project) • Shared Project не компилируется – это только набор файлов • Является более автоматизированным вариантом Linked Files
«Особенности» платформ
Несколько главных различий • Поведение элементов управления • Кнопка «Назад» • Status Bar • Анимации и переходы страниц • Настройки приложения • Плитки и уведомления • Background Transfer • И так далее…
Что делать с platform-specific кодом? • Директивы условной компиляции • Атрибут Conditional • Partial классы • Наследование
Условная компиляция • Директивы #if #else #endif • Символы WINDOWS_APP и WINDOWS_PHONE_APP • Отличное решение для небольших участков кода • Большое количество директив уменьшает читаемость #if WINDOWS_PHONE_APP var status. Bar = Status. Bar. Get. For. Current. View(); status. Bar. Progress. Indicator. Text = text; #endif
Partial классы • Позволяет легко изолировать platform-specific код • И по этой причине приходится «прыгать» между файлами • Могут содержать partial методы • Partial методы без реализации не вызываются // Class 1. Shared. cs public partial class Class 1 { partial void Set. Status. Bar. Text(string text); public void Foo() { Set. Status. Bar. Text("bar"); } } // Class 1. Windows. Phone. cs public partial class Class 1 { partial void Set. Status. Bar. Text(string text) { var status. Bar = Status. Bar. Get. For. Current. View(); status. Bar. Progress. Indicator. Text = text; } }
Совместное использование XAML разметки
Как быть с XAML? Solution 'App 1' App 1_Phone 81 References App 1_Shared App 1_Windows 81 References App 1_Shared Login. Page. xaml Solution 'App 1' App 1_Phone 81 Когда очень повезло App 1_Phone 81 References App 1_Shared Main. Page. xaml References App 1_Shared Dictionary. xaml App 1_Windows 81 References App 1_Shared Main. Page. xaml References App 1_Shared Dictionary. xaml App 1_Shared Login. Page. xaml Main. Page. xaml Общий XAML Solution 'App 1' App 1_Shared Login. Page. xaml Main. Page. xaml Разный XAML для каждой платформы Общий XAML + стили для платформ
Небольшая хитрость
Полезные советы
Используйте MVVM View Как будет отображаться информация View Model Какую информацию нужно отобразить Model Данные, логика и т. д. View Платформозависимо Привязка данных View Model Код Model Переносимо
Не забывайте про Navigation. Helper public Navigation. Helper { get; set; } public Item. Page() { Initialize. Component(); Navigation. Helper = new Navigation. Helper(this); Navigation. Helper. Load. State += Navigation. Helper_Load. State; Navigation. Helper. Save. State += Navigation. Helper_Save. State; }
Спасибо за внимание!
Разработка универсальных приложений.pptx