DevCon12 // msdevcon.ru #msdevcon мая, 2012 г. Microsoft
// DevCon12 Особенности разработки корпоративных приложений для Windows 8 АЛЕКСАНДР ДЕМАКОВ Разработчик корпоративных решений на платформах MS SharePoint и Windows Azure, Аплана МП
#msdevcon Постановка задачи
Сводка приложения Назначение Приложение предназначено для руководителей средних и крупных предприятий. Платформа Windows8 Устройства Планшетные компьютеры Ограничения В данной работе мы полностью сосредоточились на интерфейсе приложения.
Функциональные требования Основные функции: Просмотр справочника сотрудников и организационной структуры предприятия, Просмотр документов, Просмотр и выдача поручений, Возможность коммуникации с сотрудниками по аудио и/или видео.
Сценарии использования Создание поручения Пользователь открывает приложение, находит сотрудников, связывается с ними голосом и создаёт поручения на основании разговора Подписание приказа Пользователь подписывает приказ нажатием кнопки Взаимоотношения сотрудников Пользователь просматривает дни рождения сотрудников и поздравляет их.
Другие возможные сценарии Рабочий график руководителя Иван Иванович даёт поручение своему секретарю назначить совещание, через некоторое время в рабочих графиках Иван Ивановича и его заместителей появляется совещание, Показатели работы компании Иван Иванович рассматривает графики роста производства и роста продаж и видит, что продажи отстают, даёт распоряжение PR- директору провести рекламную компанию.
#msdevcon Обзор приложения Демонстрация
#msdevcon Алфавитный справочник сотрудников Демонстрация
Особенности реализации Привязка данных непосредственно к коллекции посредством LINQ GroupBy, Отсутствие дополнительных сущностей для группировки, Возможность группировки одной и той же коллекции по разным атрибутам в «одну строку кода».
#msdevcon Второй вариант алфавитного справочника Давайте немного похимичим! Эксперимент
Особенности реализации Не нужно переходить между видами для поиска нескольких сотрудников, Позвонить нескольким сотрудникам можно с одного экрана, Создать поручение сразу для нескольких сотрудников.
Как это сделано (пример кода) //xaml //cs private void gvAbc_ItemClick(object sender, ItemClickEventArgs e) { int index = 0; //находим первую фамилию, начинающийся на выбранную букву while (!((Employee)gvItems.Items[index]).Title.ToUpper().StartsWith(e.ClickedItem.ToString().ToUpper())) index++; //выполняем прокрутку gvItems.ScrollIntoView(gvItems.Items[index]); }
#msdevcon Структура организации Демонстрация
Особенности реализации Стандартный SemanticZoom поддерживает только два вида (Zoom-In и Zoom-Out), в общем случае требуется N видов, Произвольная иерархия, Переход к сотрудникам подразделения, Отображение количества сотрудников на плитке подразделения.
Как это сделано (пример кода) //xaml private bool goneBack; private void svItems_ViewChanged(object sender, ScrollViewerChangedEventArgs e) { if (svItems.ZoomFactor < 0.9 && !goneBack) { this.GoBack(sender, null); goneBack = true; }
#msdevcon Структура организации Отладка в реальном времени. Отладка
Как это сделано (пример кода) //cs protected override void OnNavigatedTo(NavigationEventArgs e) { if (e.Parameter == null) cvs.Source = DataSource.QueryDepartments(it => string.IsNullOrEmpty(it.ParentId)); else { //вышестоящее подразделение Department parent = (Department)e.Parameter; //дочерние подразделения cvs.Source = DataSource.QueryDepartments(it => it.ParentId == parent.UniqueId); }
#msdevcon Работа с документами Демонстрация
Особенности реализации Для приложений Metro в настоящее время отсутствует встроенный viewer документов docx/xps/pdf, Одним из возможных решений может быть разбивка документа на jpeg-слайды и использование flipview, Выбрано такое решение: открывать документы в отдельном приложении в соответствии с сопоставлениями файлов (docx в word, xps – windows reader).
Как это сделано (открытие файла) //cs public async void Launch() { if (string.IsNullOrEmpty(_path)) return; var file = await Windows.ApplicationModel.Package.Current.InstalledLocation.GetFileAsync(_path); if (file != null) { //запуск внешнего приложения var success = await Windows.System.Launcher.LaunchFileAsync(file); }
#msdevcon Поиск Демонстрация
Особенности реализации Поиск открывается с любой страницы, Единая страница результатов поиска со вкладками «Документы», «Поручения», «Люди», При наборе текста предлагаются варианты поиска.
#msdevcon Поиск Отладка в реальном времени. Отладка
Как это сделано (поиск) //app.xaml.cs, при активации поиска переходим на страницу поиска protected override void OnSearchActivated(SearchActivatedEventArgs args) { base.OnSearchActivated(args); var frame = ((Frame)Window.Current.Content); frame.Navigate(typeof(SearchPage), frame.Content.GetType()); }
Как это сделано (страница поиска) //SearchPage.xaml.cs, страница поиска public SearchPage() { this.InitializeComponent(); SearchPane searchContext = Windows.ApplicationModel.Search.SearchPane.GetForCurrentView(); //запрос на подсказки searchContext.SuggestionsRequested += searchContext_SuggestionsRequested; //запрос на поиск searchContext.QuerySubmitted += searchContext_QuerySubmitted; }
Как это сделано (подсказки) //отображение подсказок void searchContext_SuggestionsRequested(SearchPane sender, SearchPaneSuggestionsRequestedEventArgs args) { List items = new List (); //запрос по заголовкам документов items.AddRange(DataSource.QueryDocuments(i => i.Title.ToLower().Contains(args.QueryText.ToLower())).Take(2).Select(i => i.Title)); … args.Request.SearchSuggestionCollection.AppendQuerySuggestions(items); }
Как это сделано (запрос поиска) //отображение результатов поиска void searchContext_QuerySubmitted(SearchPane sender, SearchPaneQuerySubmittedEventArgs args) { //запрос по документам ItemGridView.ItemsSource = DataSource.QueryDocuments(it => it.Title.ToLower().Contains(args.QueryText.ToLower())); … }
#msdevcon Сотрудник на рабочем столе Демонстрация
Особенности реализации Отдельного сотрудника (например, начальника или секретаря) или несколько сотрудников можно поместить на рабочий стол и убрать с рабочего стола, При нажатии на плитку приложение открывается на странице этого сотрудника.
Итоги Стандартный SemanticZoom поддерживает только два вида, Просмотр документов отсутствует внутри приложения, Простая группировка по LINQ, Удобная интеграция с поиском, Быстрая проверка работы на планшете (touch- эмулятор).
Полезные материалы
Связанные сессии CLI202 Обзор платформы разработки для Windows 8 – Windows Runtime CLI303 Лучшие практики создания отзывчивых приложений для Windows 8
Пожалуйста Оцените доклад и мастерство докладчика. Форма для оценки находится в вашем инфопакете.
#msdevcon Вопросы Спасибо за внимание!