Мобильная операционная система Windows Phone 7, разработанная Microsoft, вышла 11 октября 2010 года. 21 октября начались поставки первых устройств на базе новой платформы. В России телефоны с Windows Phone 7 начали продаваться 16 сентября 2011.
Новая операционная система стала огромным сюрпризом в первую очередь для тех, кто уже пользовался мобильными устройствами на базе ОС Microsoft — в частности, последними поколениями Windows Mobile 6 (версии 6, 6.1, 6.5). До этого в течение очень долгого времени операционная система развивалась эволюционным путем, сохраняя обратную совместимость и основные особенности взаимодействия с пользователем. Windows Phone 7 коренным образом изменила — можно даже сказать, перевернула — все принципы построения мобильной операционной системы Microsoft. 8
Первой и самой главной особенностью Windows Phone 7 стало абсолютно новое ядро системы. Microsoft утверждает, что ядро было полностью переписано с учетом современных требований и приоритетов. У такого решения есть ряд весомых плюсов: всё ядро пишется по единой концепции, с ясной и четкой структурой, все компоненты логически увязаны и согласованно взаимодействуют между собой — в противоположность ситуации, когда ядро слеплено из самых разных кусков кода, часть из которых работает аж с 2002 года, а сверху на все это дело навешана куча заплаток и дополнительных модулей, призванных хоть как-то осовременить систему. Кроме того, ядро хорошо оптимизировано под современную аппаратную платформу, учитывает особенности современных компонентов.
Однако из этого плюса вытекает и основной минус, который очень больно ударил именно по верным поклонникам Microsoft. Новая система несовместима с Windows Mobile. Поэтому все привычные наработки и сценарии использования, все созданные и выпущенные на рынок программы, весь накопленный опыт по работе с системой отправляются на свалку истории. Более того, Microsoft очень быстрыми темпами свернула и поддержку, и сетевые сервисы, которые незадолго до этого создавала для WM6. В частности, были закрыты сервис онлайн-резервирования файлов пользователей и магазин приложений для Windows Mobile 6 (впрочем, последний и так никогда не был популярен).
Вторым важным новшеством стало то, что Microsoft решила ограничить фантазию производителей и сформировала жесткие требования к аппаратной платформе устройств под Windows Phone 7. Процессор должен иметь частоту не менее 1 ГГц (плюс, процессоры сертифицируются), оперативную память не менее 256 МБ, память для хранения данных не менее 8 ГБ, экран должен иметь одно из стандартизированных разрешений (800 x 480 и 320 x 480) и 4-точечный мультитач. В устройстве обязательно должны быть GPS-приемник, акселерометр, компас, FM-радио, камера со вспышкой. Самое интересное, что жестко регламентировано количество и функциональность кнопок. Всего их должно быть шесть: аппаратные кнопки включения, регулировки громкости и вызова камеры на боковых гранях, а также клавиши управления под экраном: назад, старт, поиск. Последние могут быть как сенсорными, так и аппаратными.
Вторым направлением, на котором произошли серьезные изменения, стала полностью переработанная концепция взаимодействия телефона и пользователя.
Во-первых, Microsoft предложила новую концепцию использования телефона вообще, предполагающую максимально тесную интеграцию телефонных и интернет-сервисов. Конкуренты Microsoft уже приучили потребителей к мысли, что современный смартфон должен иметь постоянное подключение не только к сотовым сетям, но и к интернету, откуда постоянно получает новую информацию. Microsoft творчески расширила эту концепцию: в Windows Phone предлагается вообще стереть разницу между сотовой связью и интернетом. Т.е. если нужно связаться с пользователем, то это можно сделать практически в любой момент не только через телефонный номер, но и через социальные сервисы в интернете, которыми он пользуется для общения. В идеале, в будущем грань между сервисами, которые предоставляются сотовыми сетями (голосовые вызовы, СМС, ММС и т.д.) и интернетом (почта, мессенджеры, сообщения социальных сетей и чаты там же, а также многое-многое другое), вообще должна стереться, они превратятся в средства общения одного порядка. И пользователь сможет выбирать те способы коммуникации, которые максимально удобны для него в текущий момент. Например, в новой версии Windows Phone 7 Mango диалог с контактом уже показывается в виде единой ленты независимо от того, через какие средства связи он велся.
Во-вторых, для новой телефонной ОС был разработан абсолютно новый пользовательский интерфейс системы, названный Metro. Для стиля Metro были разработаны собственные принципы, которыми Microsoft руководствовалась при создании операционной системы и собственных приложений. Этими же принципами компания призывает руководствоваться и создателей сторонних приложений. 9
Главным принципом системы является концентрация на контенте пользователя. Ведь при работе с электронным устройством пользователь хочет либо получить доступ к своим данным, либо быстро, удобно и минимально отвлекаясь от других дел решить какую-то свою задачу. Поэтому роль интерфейса сводится к тому, чтобы быстро и удобно провести пользователя туда, где он сможет сделать то, что хотел. Интерфейс теряет свое самостоятельное значение "лица" устройства, превращаясь просто в указатель пути к нужной пользователю функции. Следуя этой логике, Microsoft призывает максимально "вычистить" интерфейс: убрать все второстепенные и декоративные элементы, которые только отвлекают пользователя, оставив лишь самое главное. Это должно облегчать для пользователя навигацию и восприятие информации.
Разумеется, интерфейс должен быть приятным на вид и оставлять хорошее впечатление. Однако его красота не должна идти в ущерб простоте, скорости и информативности. Поэтому у дизайнеров остается не так уж много визуальных средств для работы. Тем не менее, Microsoft считает, что и имеющимися средствами можно достичь нужных результатов. Во-первых, следует уделять повышенное внимание шрифтам и атрибутам шрифтов. Размер, стиль и расположение надписи сами по себе могут очень многое сказать. Иногда визуальное впечатление от надписи может оказаться чуть ли не сильнее, чем информационная составляющая — и этим надо пользоваться. Для Windows Phone 7 Microsoft разработала специальный шрифт семейства Segoe. Особое внимание при разработке шрифта уделили его читаемости. В результате пользователь может распознать надпись даже с одного беглого взгляда, не нужно вчитываться в буквы. Кроме того, шрифт сохраняет читаемость даже в очень мелких надписях. Наконец, и Microsoft это особо подчеркивает, шрифт получился просто визуально красивым.
Второй важный приоритет: интерфейс должен быть динамичным и ориентированным на движение. Это довольно сложно объяснить словами, но идея состоит в том, что само построение и внешний вид интерфейса должны побуждать пользователя двигаться вперед, показывать ему, что дальше есть еще больше возможностей и дополнительной информации. В качестве примера можно привести известную (и вызвавшую в свое время очень много споров) черту интерфейса, когда в правой части экрана появляется кусочек заголовка следующего экрана.
В концепции Metro очень важная роль возложена на анимацию интерфейса. Она должна "отвлекать и развлекать пользователя". Красиво анимированный интерфейс с интересно выстроенными переходами и эффектами уже сам по себе формирует очень хорошее впечатление от работы с ним. Анимация делает интерфейс живым. Microsoft призывает всячески усиливать это впечатление. Например, активные элементы и кнопки должны реагировать на нажатие: колебаться или прожиматься. Переход с экрана на экран обязательно должен осуществляться с анимационным эффектом.
В системе предусмотрено очень много разных, подчас очень интересных видов анимации. Например, в почтовом клиенте при переходе от просмотра папки "Входящие" к просмотру отдельного письма имя отправителя и тема письма не уходят с экрана, а как бы "перелетают" на новый экран. При нажатии на кнопку "Отправить" письмо уменьшается и улетает за верхнюю грань экрана.
На анимацию возложены и другие задачи. Анимационные переходы маскируют время, необходимое системе на обработку команд пользователя. В идеале, при правильно построенной анимации, пользователь вообще не будет замечать, что приложение "задумалось". Благодаря красивой анимации он вообще не отметит, что переход от одной страницы к другой занял некоторое время.
Microsoft призывает отказаться от копирования в виртуальных интерфейсах предметов и эффектов реального мира, вместо этого более активно используя те возможности, которые дарит виртуальное пространство. Поэтому для интерфейса Metro пропагандируется переход от иконографики к инфографике. Современные меню почти всегда построены на иконках, т.?е. статических картинках, которые позволяют только найти и запустить приложение. Поэтому разработчики считают своим долгом создать для приложения максимально привлекательную иконку, как правило стилизованную под кнопку (с имитацией трехмерности и пр.). Визуальный компонент для них решающий.
Подход инфографики состоит в том, что элемент меню должен не просто обеспечивать запуск приложения, но и сам по себе давать нужную информацию, к этому приложению относящуюся: текущее состояние, наличие новых уведомлений, другую информацию. Таким образом, основное меню является для пользователя не просто панелью запуска, а полноценным информационным табло, на котором он с одного взгляда может выхватить новые события, произошедшие в системе, и быстро среагировать.
Третье направление: полностью изменена схема взаимодействия системы с пользователем и сторонними приложениями. Microsoft утверждает, что новая концепция стала результатом долгой и кропотливой работы по анализу требований современных пользователей к современным смартфонам. На основе этого анализа были выбраны новые приоритеты в разработке системы. Ими стали:
HTC Mozart Рис. 1.1 - аппарат из первой волны телефонов от фирмы HTC под управлением Windows Phone 7.
(рис 1.1) HTC Mozart
Основные характеристики 10:
Nokia Lumia 800 Рис. 1.2 позиционировался Nokia как "аппарат-флагман" компании в 2011 году.
(рис 1.2) Nokia Lumia 800
Основные характеристики 10:
(рис 1.3) Samsung Omnia W
Основные характеристики 11:
Чтобы разрабатывать для Windows Phone потребуется Visual Studio 2010 c Service Pack 1 редакции Professional или выше. Если у вас нет Visual Studio 2010, при установке инструментарий разработки для Windows Phone, автоматически будет установлена бесплатная версия Visual Studio 2010 Express for Windows Phone, на которой также можно разрабатывать приложения под Windows Phone. 12:
Обе версии интегрированных средств разработки Visual Studio предоставляют разработчику полноценные возможности по отладке на устройстве и эмуляторе такие же, какие есть у разработчиков приложений под настольную версию Windows.
Обратите внимание, что для того, чтобы отлаживаться на устройстве, помимо собственно устройства и кабеля для подключения его к компьютеру разработчика, на компьютере со средствами разработки необходимо иметь установленное ПО Zune (http://zune.net). Также перед развертыванием приложения и отладкой, требуется зарегистрировать устройство или "разлочить", с использованием утилиты Windows Phone Developer Registration Tool, которая устанавливается вместе с Windows Phone SDK.
Этот пакет, доступный для скачивания на сайте App Hub http://create.msdn.com содержит всё необходимое, для того, чтобы начать разработку. На апрель 2012г., последняя версия инструментария доступна в версии Windows Phone SDK 7.1 Release Candidate в лицензии "Go Live" с возможностью разрабатывать свои приложения и публиковать их в Windows Phone Marketplace. Windows Phone SDK 7.1 Release Candidate содержит следующие компоненты:
Если у вас не установлена версия Visual Studio 2010 редакции Professional, Expression Bland 4 или XNA Game Studio 4.0, в процессе установки также будут скачаны и установлены:
Expression Blend – это интерактивный визуальный дизайнер для XAML, технологии описания интерфейса для приложений Silverlight и Windows Presentation Foundation (WPF). Это отличное средство разработки, которое позволяет просто манипулировать слоями, анимацией, стилями и шаблонами. Это базовое средство разработки на XAML. Собственно программа Expression Blend не бесплатна, однако, специальная версия для создания дизайнов приложений под Windows Phone, под названием Expression Blend 4 for Windows Phone доступна для разработчиков бесплатно. Она закачается и установится в процессе установки Windows Phone SDK, если у вас на компьютере нет полной версии Expression Blend. Подробнее об Expression Blend 4 можно прочитать на MSDN: http://msdn.microsoft.com/ru-ru/library/cc296227.aspx
XNA Game Studio – это программное окружение, которое позволяет разрабатывать в Visual Studio игры для Windows Phone, консоли Xbox 360 и компьютеров на базе Windows. Включает в себя XNA Framework, представляющий собой набор библиотек на управляемом коде для разработки игр. Подробнее можно прочитать на MSDN: http://msdn.microsoft.com/ru-ru/library/bb200104.aspx
Несмотря на то, что Windows Phone Emulator не содержит полного набора приложений доступных на реальном устройстве, он предоставляет мощную среду, позволяющую практически полностью разработать приложение в эмуляторе.
Эмулятор Windows Phone Emulator не поддерживает проигрывание медиаконтента Zune. Эмулятор поставляется только с одним встроенным приложением Internet Explorer, но это Internet Explorer 9 с поддержкой HTML5.
При этом эмулятор позволяет тестировать звонки и отсылку SMS сообщений, поддерживает мультитач на мониторах с поддержкой мультитач, поддерживает симуляцию камеры, геолокационных сервисов и акселерометра, а также позволят делать снимки экрана.
Подробнее можно прочитать на MSDN: http://msdn.microsoft.com/ru-ru/library/ff402563(v=VS.92).aspx
Перед тем, как разработчик сможет развернуть своё приложение на реальном устройстве, его необходимо зарегистрировать как устройство разработчика – "разлочить". Это делается один раз для определенного телефона. Зарегистрированный на Marketplace разработчик может зарегистрировать до 3 устройств (для разработчика, зарегистрированного, как студент количество устройств ограничено до одного). Подробнее: http://create.msdn.com
Windows Phone Profiler доступен в меню Debug Visual Studio Рис. 1.4 с установленным инструментарием Windows Phone SDK.
(рис 1.4) Meню Debug Visual Studio
Анализирует работу программы во время исполнения , идентифицирует возможные проблемы с производительностью. Подробнее можно прочитать на MSDN: http://msdn.microsoft.com/ru-ru/library/hh202934(v=VS.92).aspx
или через NuGet.
Текущий релиз включает в себя такие элементы управления, как ContextMenu, DatePicker и TimePicker, ToggleSwitch, WrapPanel и GestureHelper.
После установки средств разработки Windows Phone SDK в диалоге New Project в Visual Studio Рис. 1.5 появятся группы проектов для Silverlight for Windows Phone:
(рис 1.5) Диалог New Project в Visual Studio
и в группе XNA Game Studio 4.0 добавятся проекты для Windows Phone Рис. 1.6 :
(рис 1.6) Группа XNA Game Studio 4.0
Рассмотрим доступные разработчику приложений шаблоны несколько более подробно.
После установки разработчику доступны следующие шаблоны приложений Silverlight for Windows Phone:
Перед тем как перейти непосредственно к шаблонам приложений, нобходимо ознакомиться с введением в Windows Phone и Metro-дизайн.
Платформа Windows Phone не просто очередная платформа для мобильных устройств. Она содержит в себе не только технологическую составляющую, но и полностью проработанную концепцию дизайна интерфейса и взаимодействия с пользователем под названием Metro-дизайн или стиль Metro.
Если вы дизайнер или в вашей команде есть выделенный дизайнер, вы можете воспользоваться всей мощью инструментарий Expression Blend 4 или Expression Blend for Windows Phone, которая поставляется вместе с Windows Phone SDK.
Что же делать если вы разработчик и не хотите заниматься визуальным дизайном приложения, например, вы разрабатываете бизнес-приложение и всё что от него требуется, соответствовать общему дизайну и стилю Windows Phone?
Всё очень просто. Во-первых, Silverlight для телефона разработан с учётом требований Metro-дизайна, поэтому все встроенные элементы управления выполнены в Metro-дизайне. Во-вторых, по умолчанию, приложения, созданные из шаблонов из поставки Windows Phone SDK, работают, выглядят и используют стили и шрифты в соответствии с Metro-дизайном.
С другой стороны, возможностей стилизации элементов управления и приложений, основанных на XAML, которые представляет Silverlight, вполне достаточно, чтобы сделать своё приложение неповторимым и узнаваемым, оставаясь в рамках стиля Metro.
Руководство по дизайну интерфейсов и взаимодействию с пользователем для Windows Phone можно найти по следующей ссылке http://msdn.microsoft.com/ru-ru/library/hh202915.aspx
Всё что было сказано выше относится, конечно, к дизайну обычных приложений, так как требования к дизайну игровых приложений и их интерфейсу, могут существенно отличаться. При этом не надо забывать об общих принципах взаимодействия с пользователем, заложенных в концепции Windows Phone.
Сначала давайте рассмотрим три шаблона, представляющих собой три основных стиля приложения для Windows Phone Рис. 1.7 :
(рис 1.7) Основные шаблоны приложений
Windows Phone Application – это аналог простого диалогового приложения у которого один основной экран, через который происходит основное взаимодействие с пользователем.
Windows Phone Pivot Application – это некий аналог приложения с закладками, где заголовок каждой закладки определяет содержимое. Стандартный вариант использования – каждая закладка представляет собой одни и те же, в целом, данные, но в разных представлениях и/или с разной фильтрацией. Например, календарь, почтовый клиент и настройки телефона. Шаблон использует элемент управления Pivot.
Windows Phone Panorama Application – приложение панорама, в котором зоны взаимодействия с пользователем также разделены на панели, но доступны они через горизонтальную прокрутку; фоновое изображение установлено сразу на всю панораму, она имеет общий заголовок, который прокручивается медленнее, чем панели; контент соседней панели справа виден при отображении текущей. Например, таким образом реализованы хабы в Windows Phone: People, Marketplace, Pictures, Music+Videos и др. Шаблон использует элемент управления Panorama.
Шаблоны, заканчивающиеся на Agent – это шаблоны библиотек, для выполнения соответствующих фоновых задач:
Шаблон Windows Phone Databound Application детальное представление с реализацией навигации между страницами с передачей параметров и хранением данных в глобальном VeiwModel.
Шаблон Windows Phone Class Library – шаблон библиотеки классов для Windows Phone.
Шаблон Windows Phone Silverlight and XNA Application для Silverlight приложения, которое может использовать XNA для рендеринга графического контента.
В диалоге New Project Visual Studio выберем Visual C#, Silverlight for Windows Phone и простой шаблон приложения Windows Phone Application и назовём его ExploringXAMLFeatures Рис. 1.8 .
(рис 1.8) Создание нового приложения
В диалоге выбора целевой операционной системы выберем Windows Phone OS 7.1 Рис. 1.9 .
(рис 1.9) Выбор операционной системы
После создания проекта, окно Visual Studio примет следующий вид Рис. 1.10
(рис 1.10) Окно после создания проекта
Рассмотрим структуру проекта в окне Solution Explorer Рис. 1.11 :
(рис 1.11) Окно после создания проекта
| Название файла | Назначение |
|---|---|
| AppManifest.xml | Файл манифеста, необходимый для генерации XAP файла, в который упаковывается приложение для развёртывания на телефоне. |
| AssemblyInfo.cs | Ещё один конфигурационный файл, в котором определяются некоторые метаданные главной сборки(Assembly) приложения. |
| WMAppManifest.xml | Файл метаданных, который содержит разнообразные настройки приложения: заголовок, задание первой страницы, пути к иконкам, определение необходимых системных возможностей и.т.д. |
| App.xaml | Это файл ресурсов приложения. Здесь располагаются глобальные ресурсы (это будет рассмотрено при использовании стилей) или глобальные события (происходящие при старте приложения). Этот файл также является точкой входа приложения. |
| App.xaml.cs | Файл кода (code-behind) для App.xaml. Здесь можно обрабатывать события и ошибки уровня приложения, в том числе его tombstoning. Данную концепция будет рассмотрена позднее, когда будет рассматриваться многозадачность. |
| ApplicationIcon.png | Картинка, которая будет иконкой приложения в телефоне. Это действительно важный файл, так как он является первым, что увидят пользователи при работе с приложением. |
| Background.png | Данная картинка используется, когда приложение закреплено на стартовом экране телефона(start screen). По сути это большая иконка приложения. Разумно сделать её визуально похожей на ApplicationIcon.png. |
| MainPage.xaml | Это часть выбранного шаблона приложения. Название MainPaige не очень удачное, но именно оно используется шаблоном проекта по умолчанию. Этот страница представляет интерфейс, который видит пользователь при старте приложения. |
| MainPage.xaml.cs | Файл кода страницы MainPage.xaml. |
| SplashScreenImage.jpg | Данная картинка отображается во время загрузки приложения. Можно задать свою картинку с анимацией, чтобы проинформировать, что приложение загружается. Есть техника создания очень динамичных страниц загрузки на XNA, но она выходит далеко за рамки этого цикла статей. |
Файлы XAML определяют интерфейс приложения. На самом деле - это просто XML файлы с языком разметки XAML.
Несмотря, что это самый простой проект, он содержит все ключевые элементы, которые содержат все остальные шаблоны и типы проектов.
Обратите внимание, что часть настроек, представленных в виде конфигурационных файлов, могут редактироваться в визуальном интерфейсе редактирования настроек приложения.
Обратите внимание, что Visual Studio по умолчанию отображает и дизайн, и XAML код страницы.
Если вы переходили к просмотру других файлов решения, двойным щелчком перейдите на файл MainPage.xaml.
В XAML код файла MainPage.xaml внутрь элеметна Grid с именем ContentPanel вставьте элемент управления Button:
<!--ContentPanel - place additional content here--> <Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0"> <Button Content="Нажми меня" Name="MyButton" FontSize="18" Width="175" Height="75" /> </Grid>
В окне дизайна кнопка отобразится сразу приблизительно в центре интерфейса. Обратили внимание на атрибут Name? Это уникальный идентификатор элемента, который помогает ссылаться на него в коде. Считайте это ID атрибутом элемента управления. Давайте теперь добавим какие-нибудь действия при нажатии на эту кнопку. Есть два способа привязать событие к кнопке Button (или любому другому элементу управления). В XAML, прямо в определении Button, можно добавить атрибут Click Рис. 1.12 и система InteliSense автоматически спросит, хотим ли мы сгенерировать новый обработчик событий:
(рис 1.12) Добавление атрибута Click
Можно связать обработчик событий напрямую в коде страницы Home.xaml.cs не указывая его в XAML файле:
public MainPage()
{
InitializeComponent();
MyButton.Click +=new RoutedEventHandler(MyButton_Click);
}
Оба способа работают. Можете использовать любой из них. Для упрощения здесь будет использоваться определение метода в XAML. Теперь в функции MyButton_Click можно написать управляемый код, который будет изменять интерфейс или вызывать другие функции. Завершим наш пример приложения, добавив код, который будет изменять текст в TextBlock PageTitle (PageTitle – это Name, так что можно ссылаться на неё напрямую в коде) на "привет wp7". Чтобы сделать это допишем следующий код в функцию:
private void MyButton_Click(object sender, RoutedEventArgs e)
{
PageTitle.Text = "привет wp7";
}
Выберем в настройках проекта Windows Device Emulator Рис. 1.13 :
(рис 1.13) Выбор Windows Device Emulator
И запустим приложение, нажав на зеленый треугольник или копку F5. После запуска приложения и нажатия на кнопку "Нажми меня", вид экрана должен быть аналогичным снимку экрана на Рис. 1.14:
(рис 1.14) Вид экрана эмулятора
Только самое простое приложение состоит из одной страницы. Мы хотим научиться писать сложные многостраничные приложения. Мы можем использовать шаблоны Pivot, Panorama, можем использовать шаблон проектирования MVVM (Model-View-ViewModel), а сначала научимся добавлять новые страницы в проект и переходить между ними.
В окне Solution Explorer щелкнем правой кнопкой мыши по названия проекта, и в отобразившемся меню выберем, Add, далее New Item, в открывшемся диалоговом окне выберем Windows Phone Portrait Page и назовем её SecondPage.xaml Рис. 1.15:
(рис 1.15) Создание новой страницы в проекте
Теперь у нас есть пустая XAML страница, точная копия страницы MainPage.xaml до того, как мы её отредактировали.
Чтобы лучше различать страницы, перейдем к XAML коду страницы SecondPage и у элемента TextBlock с Name PageTitle отредактируем свойство Text, как показано ниже:
<TextBlock Name="PageTitle" Text="second page"
Margin="9,-7,0,0" Style="{StaticResource PhoneTextTitle1Style}"/>
Итак, у нас в проекте есть две страницы, при запуске приложения отображается страница MainPage.xaml. Как теперь перейти со страницы MainPage.xaml на SecondPage.xaml?
Попробуем два простых способа, как это сделать.
В XAML код файла MainPage.xaml после добавленного ранее кода Button, добавим код HyperlinkButton, как показано ниже:
<!--ContentPanel - place additional content here-->
<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
<Button Content="Нажми меня" Name="MyButton" FontSize="18" Width="175" Height="75" />
<HyperlinkButton Content="Вторая страница" Name="MyHyperlinkButton" FontSize="18" Width="175"
Height="75" Margin="140,350,140,185" />
</Grid>
Элемент управления HyperlinkButton имеет специальноe свойство NavigateUri, которое позволяет указать Uri для перехода. Добавим это свойство со значением /SecondPage.xaml, как показано ниже:
<HyperlinkButton Content="Вторая страница" Name="MyHyperlinkButton" FontSize="18" Width="175" Height="75" Margin="140,350,140,185" NavigateUri="/SecondPage.xaml"/>
Запустим приложение (F5).
Когда отобразится интерфейс приложения, если мы нажмём ссылку "Вторая страница", то произойдет переход на вторую, ранее созданную страницу SecondPage.xaml. Если после этого нажать на аппаратную кнопку Back, то мы вернёмся на основную (предыдущую) страницу – по умолчанию эта кнопка позволяет перейти на предыдущую активную страницу.
Теперь воспользуемся возможностью программного перехода. Сначала добавим в секцию using следующий код:
using System.Windows.Navigation;
А затем, заменим код обработчика MyButton_Click на следующий:
private void MyButton_Click(object sender, RoutedEventArgs e)
{
NavigationService.Navigate(new Uri("/SecondPage.xaml", UriKind.Relative));
}
Запустите приложение (F5) и убедитесь, что кнопка работает также как и ссылка.
Добавим на вторую страницу (SecondPage.xaml) элементы управления и код, который бы позволял вернуться на предыдущую страницу.
В XAML код файла SecondPage.xaml внутрь элеметна Grid с именем ContentPanel вставьте элементы управления Button и HyperlinkButton, как показано ниже:
<!--ContentPanel - place additional content here--> <Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0"> <Button Content="Обратно" Name="MyButton" FontSize="18" Width="175" Height="75" Click="MyButton_Click" /> <HyperlinkButton Content="Первая страница" Name="MyHyperlinkButton" FontSize="18" Width="175" Height="75" Margin="140,350,140,185" NavigateUri="/MainPage.xaml"/> </Grid>
Для создания обработчика события Click кнопки MyButton на странице SecondPage кликните правой кнопкой мыши по тексту MyButton_Click в XAML редакторе и выберите Navigae to Event Handler.
Запустите приложение (F5) и убедитесь, что ссылка "Первая страница" на второй странице возвращает приложение на MainPage.
Теперь воспользуемся возможностью программного перехода. В коде страницы SecondPage.xaml.cs добавим в секцию using следующий код:
using System.Windows.Navigation;
А затем, заменим код обработчика MyButton_Click на следующий:
private void MyButton_Click(object sender, RoutedEventArgs e)
{
NavigationService.GoBack();
}
Запустите приложение (F5) и убедитесь, что кнопка Обратно на второй странице возвращает приложение на MainPage.
Обратите внимание, что в коде, который запускается по нажатию кнопки мы не использовали название страницы, на которую нам необходимо перейти, а попросили сервис навигации, представленный классом NavigationService перейти на страницу, которая была в стеке переходов перед текущей.
События перехода с/на страницы могут быть обработаны програмно, например, чтобы уточнить у пользователя, действительно ли он хочет уйти с текущей страницы.
Добавьте следующий код в файл SecondPage.xaml.cs сразу после обработчика MyButton_Click:
protected override void OnNavigatingFrom(NavigatingCancelEventArgs e)
{
base.OnNavigatingFrom(e);
// Если можно отменить переход, уточним у пользователя, хочет ли он остаться на текущей странице
if (e.IsCancelable)
{
MessageBoxResult result = MessageBox.Show("Может быть останетесь?",
"Подтверждение перехода", MessageBoxButton.OKCancel);
if (result == MessageBoxResult.OK)
{
// Пользователь решил остаться
e.Cancel = true;
return;
}
}
}
Код достаточно прост и с ним можго разобраться самостоятельно.
Запустите приложение (F5) и обратите внимание, что уточняющий диалог отображается вне зависимости от того, собираемся вы вернуться на MainPage нажатием на кнопку или по ссылке.
Теперь осталось научиться передавать между страницами параметры.
Двойным щелчком по MainPage.xaml перейдём к редактированию основной страницы. В коде MainPage.xaml добавим элемент управления TextBox, выше элемента Button, как показано ниже:
<!--ContentPanel - place additional content here--> <Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0"> <TextBox Name="MyTextBox" Width="175" Height="75" Margin="140,185,140,350"/> <Button Content="Нажми меня" Name="MyButton" FontSize="18" Width="175" Height="75" Click="MyButton_Click"/> <HyperlinkButton Content="Вторая страница" Name="MyHyperlinkButton" FontSize="18" Width="175" Height="75" Margin="140,350,140,185" NavigateUri="/SecondPage.xaml"/> </Grid>
Двойным щелчком по SecondPage.xaml перейдём к редактированию основной страницы. В коде SecondPage.xaml добавим элемент управления TextBox, выше элемента Button, также как на странице MainPage:
<!--ContentPanel - place additional content here-->
<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
<TextBox Name="MyTextBox" Width="175" Height="75" Margin="140,185,140,350"/>
<Button Content="Обратно" Name="MyButton" FontSize="18" Width="175"
Height="75" Click="MyButton_Click" />
<HyperlinkButton Content="Первая страница" Name="MyHyperlinkButton" FontSize="18" Width="175"
Height="75" Margin="140,350,140,185" NavigateUri="/MainPage.xaml"/>
</Grid>
Теперь, в обработчик события MyButton_Click страницы MainPage добавим параметры в Uri перехода на вторую страницу по кнопке:
private void MyButton_Click(object sender, RoutedEventArgs e)
{
NavigationService.Navigate(new Uri("/SecondPage.xaml?text="+Uri.EscapeDataString(MyTextBox.Text),
UriKind.Relative));
}
И, наконец, в код страницы SecondPage.xaml.cs, сразу же после обработчика OnNavigatedFrom, добавим обработчик прихода на страницу OnNavigatedTo и в нем обработаем приходящий параметр и выведем его в MyTextBox:
protected override void OnNavigatedTo(NavigationEventArgs e)
{
base.OnNavigatedTo(e);
if (NavigationContext.QueryString.ContainsKey("text"))
{
MyTextBox.Text = NavigationContext.QueryString["text"].ToString();
}
}
Запустите приложение (F5) и проверьте, как оно работает, например, при переходе по ссылке со страницы MainPage на SecondPage.
Мобильная операционная система Windows Phone 7, разработанная Microsoft, вышла 11 октября 2010 года. 21 октября начались поставки первых устройств на базе новой платформы. В России телефоны с Windows Phone 7 начали продаваться 16 сентября 2011.
Новая операционная система стала огромным сюрпризом в первую очередь для тех, кто уже пользовался мобильными устройствами на базе ОС Microsoft — в частности, последними поколениями Windows Mobile 6 (версии 6, 6.1, 6.5). До этого в течение очень долгого времени операционная система развивалась эволюционным путем, сохраняя обратную совместимость и основные особенности взаимодействия с пользователем. Windows Phone 7 коренным образом изменила — можно даже сказать, перевернула — все принципы построения мобильной операционной системы Microsoft. 8
Первой и самой главной особенностью Windows Phone 7 стало абсолютно новое ядро системы. Microsoft утверждает, что ядро было полностью переписано с учетом современных требований и приоритетов. У такого решения есть ряд весомых плюсов: всё ядро пишется по единой концепции, с ясной и четкой структурой, все компоненты логически увязаны и согласованно взаимодействуют между собой — в противоположность ситуации, когда ядро слеплено из самых разных кусков кода, часть из которых работает аж с 2002 года, а сверху на все это дело навешана куча заплаток и дополнительных модулей, призванных хоть как-то осовременить систему. Кроме того, ядро хорошо оптимизировано под современную аппаратную платформу, учитывает особенности современных компонентов.
Однако из этого плюса вытекает и основной минус, который очень больно ударил именно по верным поклонникам Microsoft. Новая система несовместима с Windows Mobile. Поэтому все привычные наработки и сценарии использования, все созданные и выпущенные на рынок программы, весь накопленный опыт по работе с системой отправляются на свалку истории. Более того, Microsoft очень быстрыми темпами свернула и поддержку, и сетевые сервисы, которые незадолго до этого создавала для WM6. В частности, были закрыты сервис онлайн-резервирования файлов пользователей и магазин приложений для Windows Mobile 6 (впрочем, последний и так никогда не был популярен).
Вторым важным новшеством стало то, что Microsoft решила ограничить фантазию производителей и сформировала жесткие требования к аппаратной платформе устройств под Windows Phone 7. Процессор должен иметь частоту не менее 1 ГГц (плюс, процессоры сертифицируются), оперативную память не менее 256 МБ, память для хранения данных не менее 8 ГБ, экран должен иметь одно из стандартизированных разрешений (800 x 480 и 320 x 480) и 4-точечный мультитач. В устройстве обязательно должны быть GPS-приемник, акселерометр, компас, FM-радио, камера со вспышкой. Самое интересное, что жестко регламентировано количество и функциональность кнопок. Всего их должно быть шесть: аппаратные кнопки включения, регулировки громкости и вызова камеры на боковых гранях, а также клавиши управления под экраном: назад, старт, поиск. Последние могут быть как сенсорными, так и аппаратными.
Вторым направлением, на котором произошли серьезные изменения, стала полностью переработанная концепция взаимодействия телефона и пользователя.
Во-первых, Microsoft предложила новую концепцию использования телефона вообще, предполагающую максимально тесную интеграцию телефонных и интернет-сервисов. Конкуренты Microsoft уже приучили потребителей к мысли, что современный смартфон должен иметь постоянное подключение не только к сотовым сетям, но и к интернету, откуда постоянно получает новую информацию. Microsoft творчески расширила эту концепцию: в Windows Phone предлагается вообще стереть разницу между сотовой связью и интернетом. Т.е. если нужно связаться с пользователем, то это можно сделать практически в любой момент не только через телефонный номер, но и через социальные сервисы в интернете, которыми он пользуется для общения. В идеале, в будущем грань между сервисами, которые предоставляются сотовыми сетями (голосовые вызовы, СМС, ММС и т.д.) и интернетом (почта, мессенджеры, сообщения социальных сетей и чаты там же, а также многое-многое другое), вообще должна стереться, они превратятся в средства общения одного порядка. И пользователь сможет выбирать те способы коммуникации, которые максимально удобны для него в текущий момент. Например, в новой версии Windows Phone 7 Mango диалог с контактом уже показывается в виде единой ленты независимо от того, через какие средства связи он велся.
Во-вторых, для новой телефонной ОС был разработан абсолютно новый пользовательский интерфейс системы, названный Metro. Для стиля Metro были разработаны собственные принципы, которыми Microsoft руководствовалась при создании операционной системы и собственных приложений. Этими же принципами компания призывает руководствоваться и создателей сторонних приложений. 9
Главным принципом системы является концентрация на контенте пользователя. Ведь при работе с электронным устройством пользователь хочет либо получить доступ к своим данным, либо быстро, удобно и минимально отвлекаясь от других дел решить какую-то свою задачу. Поэтому роль интерфейса сводится к тому, чтобы быстро и удобно провести пользователя туда, где он сможет сделать то, что хотел. Интерфейс теряет свое самостоятельное значение "лица" устройства, превращаясь просто в указатель пути к нужной пользователю функции. Следуя этой логике, Microsoft призывает максимально "вычистить" интерфейс: убрать все второстепенные и декоративные элементы, которые только отвлекают пользователя, оставив лишь самое главное. Это должно облегчать для пользователя навигацию и восприятие информации.
Разумеется, интерфейс должен быть приятным на вид и оставлять хорошее впечатление. Однако его красота не должна идти в ущерб простоте, скорости и информативности. Поэтому у дизайнеров остается не так уж много визуальных средств для работы. Тем не менее, Microsoft считает, что и имеющимися средствами можно достичь нужных результатов. Во-первых, следует уделять повышенное внимание шрифтам и атрибутам шрифтов. Размер, стиль и расположение надписи сами по себе могут очень многое сказать. Иногда визуальное впечатление от надписи может оказаться чуть ли не сильнее, чем информационная составляющая — и этим надо пользоваться. Для Windows Phone 7 Microsoft разработала специальный шрифт семейства Segoe. Особое внимание при разработке шрифта уделили его читаемости. В результате пользователь может распознать надпись даже с одного беглого взгляда, не нужно вчитываться в буквы. Кроме того, шрифт сохраняет читаемость даже в очень мелких надписях. Наконец, и Microsoft это особо подчеркивает, шрифт получился просто визуально красивым.
Второй важный приоритет: интерфейс должен быть динамичным и ориентированным на движение. Это довольно сложно объяснить словами, но идея состоит в том, что само построение и внешний вид интерфейса должны побуждать пользователя двигаться вперед, показывать ему, что дальше есть еще больше возможностей и дополнительной информации. В качестве примера можно привести известную (и вызвавшую в свое время очень много споров) черту интерфейса, когда в правой части экрана появляется кусочек заголовка следующего экрана.
В концепции Metro очень важная роль возложена на анимацию интерфейса. Она должна "отвлекать и развлекать пользователя". Красиво анимированный интерфейс с интересно выстроенными переходами и эффектами уже сам по себе формирует очень хорошее впечатление от работы с ним. Анимация делает интерфейс живым. Microsoft призывает всячески усиливать это впечатление. Например, активные элементы и кнопки должны реагировать на нажатие: колебаться или прожиматься. Переход с экрана на экран обязательно должен осуществляться с анимационным эффектом.
В системе предусмотрено очень много разных, подчас очень интересных видов анимации. Например, в почтовом клиенте при переходе от просмотра папки "Входящие" к просмотру отдельного письма имя отправителя и тема письма не уходят с экрана, а как бы "перелетают" на новый экран. При нажатии на кнопку "Отправить" письмо уменьшается и улетает за верхнюю грань экрана.
На анимацию возложены и другие задачи. Анимационные переходы маскируют время, необходимое системе на обработку команд пользователя. В идеале, при правильно построенной анимации, пользователь вообще не будет замечать, что приложение "задумалось". Благодаря красивой анимации он вообще не отметит, что переход от одной страницы к другой занял некоторое время.
Microsoft призывает отказаться от копирования в виртуальных интерфейсах предметов и эффектов реального мира, вместо этого более активно используя те возможности, которые дарит виртуальное пространство. Поэтому для интерфейса Metro пропагандируется переход от иконографики к инфографике. Современные меню почти всегда построены на иконках, т.?е. статических картинках, которые позволяют только найти и запустить приложение. Поэтому разработчики считают своим долгом создать для приложения максимально привлекательную иконку, как правило стилизованную под кнопку (с имитацией трехмерности и пр.). Визуальный компонент для них решающий.
Подход инфографики состоит в том, что элемент меню должен не просто обеспечивать запуск приложения, но и сам по себе давать нужную информацию, к этому приложению относящуюся: текущее состояние, наличие новых уведомлений, другую информацию. Таким образом, основное меню является для пользователя не просто панелью запуска, а полноценным информационным табло, на котором он с одного взгляда может выхватить новые события, произошедшие в системе, и быстро среагировать.
Третье направление: полностью изменена схема взаимодействия системы с пользователем и сторонними приложениями. Microsoft утверждает, что новая концепция стала результатом долгой и кропотливой работы по анализу требований современных пользователей к современным смартфонам. На основе этого анализа были выбраны новые приоритеты в разработке системы. Ими стали:
HTC Mozart Рис. 1.1 - аппарат из первой волны телефонов от фирмы HTC под управлением Windows Phone 7.
(рис 1.1) HTC Mozart
Основные характеристики 10:
Nokia Lumia 800 Рис. 1.2 позиционировался Nokia как "аппарат-флагман" компании в 2011 году.
(рис 1.2) Nokia Lumia 800
Основные характеристики 10:
(рис 1.3) Samsung Omnia W
Основные характеристики 11:
Чтобы разрабатывать для Windows Phone потребуется Visual Studio 2010 c Service Pack 1 редакции Professional или выше. Если у вас нет Visual Studio 2010, при установке инструментарий разработки для Windows Phone, автоматически будет установлена бесплатная версия Visual Studio 2010 Express for Windows Phone, на которой также можно разрабатывать приложения под Windows Phone. 12:
Обе версии интегрированных средств разработки Visual Studio предоставляют разработчику полноценные возможности по отладке на устройстве и эмуляторе такие же, какие есть у разработчиков приложений под настольную версию Windows.
Обратите внимание, что для того, чтобы отлаживаться на устройстве, помимо собственно устройства и кабеля для подключения его к компьютеру разработчика, на компьютере со средствами разработки необходимо иметь установленное ПО Zune (http://zune.net). Также перед развертыванием приложения и отладкой, требуется зарегистрировать устройство или "разлочить", с использованием утилиты Windows Phone Developer Registration Tool, которая устанавливается вместе с Windows Phone SDK.
Этот пакет, доступный для скачивания на сайте App Hub http://create.msdn.com содержит всё необходимое, для того, чтобы начать разработку. На апрель 2012г., последняя версия инструментария доступна в версии Windows Phone SDK 7.1 Release Candidate в лицензии "Go Live" с возможностью разрабатывать свои приложения и публиковать их в Windows Phone Marketplace. Windows Phone SDK 7.1 Release Candidate содержит следующие компоненты:
Если у вас не установлена версия Visual Studio 2010 редакции Professional, Expression Bland 4 или XNA Game Studio 4.0, в процессе установки также будут скачаны и установлены:
Expression Blend – это интерактивный визуальный дизайнер для XAML, технологии описания интерфейса для приложений Silverlight и Windows Presentation Foundation (WPF). Это отличное средство разработки, которое позволяет просто манипулировать слоями, анимацией, стилями и шаблонами. Это базовое средство разработки на XAML. Собственно программа Expression Blend не бесплатна, однако, специальная версия для создания дизайнов приложений под Windows Phone, под названием Expression Blend 4 for Windows Phone доступна для разработчиков бесплатно. Она закачается и установится в процессе установки Windows Phone SDK, если у вас на компьютере нет полной версии Expression Blend. Подробнее об Expression Blend 4 можно прочитать на MSDN: http://msdn.microsoft.com/ru-ru/library/cc296227.aspx
XNA Game Studio – это программное окружение, которое позволяет разрабатывать в Visual Studio игры для Windows Phone, консоли Xbox 360 и компьютеров на базе Windows. Включает в себя XNA Framework, представляющий собой набор библиотек на управляемом коде для разработки игр. Подробнее можно прочитать на MSDN: http://msdn.microsoft.com/ru-ru/library/bb200104.aspx
Несмотря на то, что Windows Phone Emulator не содержит полного набора приложений доступных на реальном устройстве, он предоставляет мощную среду, позволяющую практически полностью разработать приложение в эмуляторе.
Эмулятор Windows Phone Emulator не поддерживает проигрывание медиаконтента Zune. Эмулятор поставляется только с одним встроенным приложением Internet Explorer, но это Internet Explorer 9 с поддержкой HTML5.
При этом эмулятор позволяет тестировать звонки и отсылку SMS сообщений, поддерживает мультитач на мониторах с поддержкой мультитач, поддерживает симуляцию камеры, геолокационных сервисов и акселерометра, а также позволят делать снимки экрана.
Подробнее можно прочитать на MSDN: http://msdn.microsoft.com/ru-ru/library/ff402563(v=VS.92).aspx
Перед тем, как разработчик сможет развернуть своё приложение на реальном устройстве, его необходимо зарегистрировать как устройство разработчика – "разлочить". Это делается один раз для определенного телефона. Зарегистрированный на Marketplace разработчик может зарегистрировать до 3 устройств (для разработчика, зарегистрированного, как студент количество устройств ограничено до одного). Подробнее: http://create.msdn.com
Windows Phone Profiler доступен в меню Debug Visual Studio Рис. 1.4 с установленным инструментарием Windows Phone SDK.
(рис 1.4) Meню Debug Visual Studio
Анализирует работу программы во время исполнения , идентифицирует возможные проблемы с производительностью. Подробнее можно прочитать на MSDN: http://msdn.microsoft.com/ru-ru/library/hh202934(v=VS.92).aspx
или через NuGet.
Текущий релиз включает в себя такие элементы управления, как ContextMenu, DatePicker и TimePicker, ToggleSwitch, WrapPanel и GestureHelper.
После установки средств разработки Windows Phone SDK в диалоге New Project в Visual Studio Рис. 1.5 появятся группы проектов для Silverlight for Windows Phone:
(рис 1.5) Диалог New Project в Visual Studio
и в группе XNA Game Studio 4.0 добавятся проекты для Windows Phone Рис. 1.6 :
(рис 1.6) Группа XNA Game Studio 4.0
Рассмотрим доступные разработчику приложений шаблоны несколько более подробно.
После установки разработчику доступны следующие шаблоны приложений Silverlight for Windows Phone:
Перед тем как перейти непосредственно к шаблонам приложений, нобходимо ознакомиться с введением в Windows Phone и Metro-дизайн.
Платформа Windows Phone не просто очередная платформа для мобильных устройств. Она содержит в себе не только технологическую составляющую, но и полностью проработанную концепцию дизайна интерфейса и взаимодействия с пользователем под названием Metro-дизайн или стиль Metro.
Если вы дизайнер или в вашей команде есть выделенный дизайнер, вы можете воспользоваться всей мощью инструментарий Expression Blend 4 или Expression Blend for Windows Phone, которая поставляется вместе с Windows Phone SDK.
Что же делать если вы разработчик и не хотите заниматься визуальным дизайном приложения, например, вы разрабатываете бизнес-приложение и всё что от него требуется, соответствовать общему дизайну и стилю Windows Phone?
Всё очень просто. Во-первых, Silverlight для телефона разработан с учётом требований Metro-дизайна, поэтому все встроенные элементы управления выполнены в Metro-дизайне. Во-вторых, по умолчанию, приложения, созданные из шаблонов из поставки Windows Phone SDK, работают, выглядят и используют стили и шрифты в соответствии с Metro-дизайном.
С другой стороны, возможностей стилизации элементов управления и приложений, основанных на XAML, которые представляет Silverlight, вполне достаточно, чтобы сделать своё приложение неповторимым и узнаваемым, оставаясь в рамках стиля Metro.
Руководство по дизайну интерфейсов и взаимодействию с пользователем для Windows Phone можно найти по следующей ссылке http://msdn.microsoft.com/ru-ru/library/hh202915.aspx
Всё что было сказано выше относится, конечно, к дизайну обычных приложений, так как требования к дизайну игровых приложений и их интерфейсу, могут существенно отличаться. При этом не надо забывать об общих принципах взаимодействия с пользователем, заложенных в концепции Windows Phone.
Сначала давайте рассмотрим три шаблона, представляющих собой три основных стиля приложения для Windows Phone Рис. 1.7 :
(рис 1.7) Основные шаблоны приложений
Windows Phone Application – это аналог простого диалогового приложения у которого один основной экран, через который происходит основное взаимодействие с пользователем.
Windows Phone Pivot Application – это некий аналог приложения с закладками, где заголовок каждой закладки определяет содержимое. Стандартный вариант использования – каждая закладка представляет собой одни и те же, в целом, данные, но в разных представлениях и/или с разной фильтрацией. Например, календарь, почтовый клиент и настройки телефона. Шаблон использует элемент управления Pivot.
Windows Phone Panorama Application – приложение панорама, в котором зоны взаимодействия с пользователем также разделены на панели, но доступны они через горизонтальную прокрутку; фоновое изображение установлено сразу на всю панораму, она имеет общий заголовок, который прокручивается медленнее, чем панели; контент соседней панели справа виден при отображении текущей. Например, таким образом реализованы хабы в Windows Phone: People, Marketplace, Pictures, Music+Videos и др. Шаблон использует элемент управления Panorama.
Шаблоны, заканчивающиеся на Agent – это шаблоны библиотек, для выполнения соответствующих фоновых задач:
Шаблон Windows Phone Databound Application детальное представление с реализацией навигации между страницами с передачей параметров и хранением данных в глобальном VeiwModel.
Шаблон Windows Phone Class Library – шаблон библиотеки классов для Windows Phone.
Шаблон Windows Phone Silverlight and XNA Application для Silverlight приложения, которое может использовать XNA для рендеринга графического контента.
В диалоге New Project Visual Studio выберем Visual C#, Silverlight for Windows Phone и простой шаблон приложения Windows Phone Application и назовём его ExploringXAMLFeatures Рис. 1.8 .
(рис 1.8) Создание нового приложения
В диалоге выбора целевой операционной системы выберем Windows Phone OS 7.1 Рис. 1.9 .
(рис 1.9) Выбор операционной системы
После создания проекта, окно Visual Studio примет следующий вид Рис. 1.10
(рис 1.10) Окно после создания проекта
Рассмотрим структуру проекта в окне Solution Explorer Рис. 1.11 :
(рис 1.11) Окно после создания проекта
| Название файла | Назначение |
|---|---|
| AppManifest.xml | Файл манифеста, необходимый для генерации XAP файла, в который упаковывается приложение для развёртывания на телефоне. |
| AssemblyInfo.cs | Ещё один конфигурационный файл, в котором определяются некоторые метаданные главной сборки(Assembly) приложения. |
| WMAppManifest.xml | Файл метаданных, который содержит разнообразные настройки приложения: заголовок, задание первой страницы, пути к иконкам, определение необходимых системных возможностей и.т.д. |
| App.xaml | Это файл ресурсов приложения. Здесь располагаются глобальные ресурсы (это будет рассмотрено при использовании стилей) или глобальные события (происходящие при старте приложения). Этот файл также является точкой входа приложения. |
| App.xaml.cs | Файл кода (code-behind) для App.xaml. Здесь можно обрабатывать события и ошибки уровня приложения, в том числе его tombstoning. Данную концепция будет рассмотрена позднее, когда будет рассматриваться многозадачность. |
| ApplicationIcon.png | Картинка, которая будет иконкой приложения в телефоне. Это действительно важный файл, так как он является первым, что увидят пользователи при работе с приложением. |
| Background.png | Данная картинка используется, когда приложение закреплено на стартовом экране телефона(start screen). По сути это большая иконка приложения. Разумно сделать её визуально похожей на ApplicationIcon.png. |
| MainPage.xaml | Это часть выбранного шаблона приложения. Название MainPaige не очень удачное, но именно оно используется шаблоном проекта по умолчанию. Этот страница представляет интерфейс, который видит пользователь при старте приложения. |
| MainPage.xaml.cs | Файл кода страницы MainPage.xaml. |
| SplashScreenImage.jpg | Данная картинка отображается во время загрузки приложения. Можно задать свою картинку с анимацией, чтобы проинформировать, что приложение загружается. Есть техника создания очень динамичных страниц загрузки на XNA, но она выходит далеко за рамки этого цикла статей. |
Файлы XAML определяют интерфейс приложения. На самом деле - это просто XML файлы с языком разметки XAML.
Несмотря, что это самый простой проект, он содержит все ключевые элементы, которые содержат все остальные шаблоны и типы проектов.
Обратите внимание, что часть настроек, представленных в виде конфигурационных файлов, могут редактироваться в визуальном интерфейсе редактирования настроек приложения.
Обратите внимание, что Visual Studio по умолчанию отображает и дизайн, и XAML код страницы.
Если вы переходили к просмотру других файлов решения, двойным щелчком перейдите на файл MainPage.xaml.
В XAML код файла MainPage.xaml внутрь элеметна Grid с именем ContentPanel вставьте элемент управления Button:
<!--ContentPanel - place additional content here--> <Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0"> <Button Content="Нажми меня" Name="MyButton" FontSize="18" Width="175" Height="75" /> </Grid>
В окне дизайна кнопка отобразится сразу приблизительно в центре интерфейса. Обратили внимание на атрибут Name? Это уникальный идентификатор элемента, который помогает ссылаться на него в коде. Считайте это ID атрибутом элемента управления. Давайте теперь добавим какие-нибудь действия при нажатии на эту кнопку. Есть два способа привязать событие к кнопке Button (или любому другому элементу управления). В XAML, прямо в определении Button, можно добавить атрибут Click Рис. 1.12 и система InteliSense автоматически спросит, хотим ли мы сгенерировать новый обработчик событий:
(рис 1.12) Добавление атрибута Click
Можно связать обработчик событий напрямую в коде страницы Home.xaml.cs не указывая его в XAML файле:
public MainPage()
{
InitializeComponent();
MyButton.Click +=new RoutedEventHandler(MyButton_Click);
}
Оба способа работают. Можете использовать любой из них. Для упрощения здесь будет использоваться определение метода в XAML. Теперь в функции MyButton_Click можно написать управляемый код, который будет изменять интерфейс или вызывать другие функции. Завершим наш пример приложения, добавив код, который будет изменять текст в TextBlock PageTitle (PageTitle – это Name, так что можно ссылаться на неё напрямую в коде) на "привет wp7". Чтобы сделать это допишем следующий код в функцию:
private void MyButton_Click(object sender, RoutedEventArgs e)
{
PageTitle.Text = "привет wp7";
}
Выберем в настройках проекта Windows Device Emulator Рис. 1.13 :
(рис 1.13) Выбор Windows Device Emulator
И запустим приложение, нажав на зеленый треугольник или копку F5. После запуска приложения и нажатия на кнопку "Нажми меня", вид экрана должен быть аналогичным снимку экрана на Рис. 1.14:
(рис 1.14) Вид экрана эмулятора
Только самое простое приложение состоит из одной страницы. Мы хотим научиться писать сложные многостраничные приложения. Мы можем использовать шаблоны Pivot, Panorama, можем использовать шаблон проектирования MVVM (Model-View-ViewModel), а сначала научимся добавлять новые страницы в проект и переходить между ними.
В окне Solution Explorer щелкнем правой кнопкой мыши по названия проекта, и в отобразившемся меню выберем, Add, далее New Item, в открывшемся диалоговом окне выберем Windows Phone Portrait Page и назовем её SecondPage.xaml Рис. 1.15:
(рис 1.15) Создание новой страницы в проекте
Теперь у нас есть пустая XAML страница, точная копия страницы MainPage.xaml до того, как мы её отредактировали.
Чтобы лучше различать страницы, перейдем к XAML коду страницы SecondPage и у элемента TextBlock с Name PageTitle отредактируем свойство Text, как показано ниже:
<TextBlock Name="PageTitle" Text="second page"
Margin="9,-7,0,0" Style="{StaticResource PhoneTextTitle1Style}"/>
Итак, у нас в проекте есть две страницы, при запуске приложения отображается страница MainPage.xaml. Как теперь перейти со страницы MainPage.xaml на SecondPage.xaml?
Попробуем два простых способа, как это сделать.
В XAML код файла MainPage.xaml после добавленного ранее кода Button, добавим код HyperlinkButton, как показано ниже:
<!--ContentPanel - place additional content here-->
<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
<Button Content="Нажми меня" Name="MyButton" FontSize="18" Width="175" Height="75" />
<HyperlinkButton Content="Вторая страница" Name="MyHyperlinkButton" FontSize="18" Width="175"
Height="75" Margin="140,350,140,185" />
</Grid>
Элемент управления HyperlinkButton имеет специальноe свойство NavigateUri, которое позволяет указать Uri для перехода. Добавим это свойство со значением /SecondPage.xaml, как показано ниже:
<HyperlinkButton Content="Вторая страница" Name="MyHyperlinkButton" FontSize="18" Width="175" Height="75" Margin="140,350,140,185" NavigateUri="/SecondPage.xaml"/>
Запустим приложение (F5).
Когда отобразится интерфейс приложения, если мы нажмём ссылку "Вторая страница", то произойдет переход на вторую, ранее созданную страницу SecondPage.xaml. Если после этого нажать на аппаратную кнопку Back, то мы вернёмся на основную (предыдущую) страницу – по умолчанию эта кнопка позволяет перейти на предыдущую активную страницу.
Теперь воспользуемся возможностью программного перехода. Сначала добавим в секцию using следующий код:
using System.Windows.Navigation;
А затем, заменим код обработчика MyButton_Click на следующий:
private void MyButton_Click(object sender, RoutedEventArgs e)
{
NavigationService.Navigate(new Uri("/SecondPage.xaml", UriKind.Relative));
}
Запустите приложение (F5) и убедитесь, что кнопка работает также как и ссылка.
Добавим на вторую страницу (SecondPage.xaml) элементы управления и код, который бы позволял вернуться на предыдущую страницу.
В XAML код файла SecondPage.xaml внутрь элеметна Grid с именем ContentPanel вставьте элементы управления Button и HyperlinkButton, как показано ниже:
<!--ContentPanel - place additional content here--> <Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0"> <Button Content="Обратно" Name="MyButton" FontSize="18" Width="175" Height="75" Click="MyButton_Click" /> <HyperlinkButton Content="Первая страница" Name="MyHyperlinkButton" FontSize="18" Width="175" Height="75" Margin="140,350,140,185" NavigateUri="/MainPage.xaml"/> </Grid>
Для создания обработчика события Click кнопки MyButton на странице SecondPage кликните правой кнопкой мыши по тексту MyButton_Click в XAML редакторе и выберите Navigae to Event Handler.
Запустите приложение (F5) и убедитесь, что ссылка "Первая страница" на второй странице возвращает приложение на MainPage.
Теперь воспользуемся возможностью программного перехода. В коде страницы SecondPage.xaml.cs добавим в секцию using следующий код:
using System.Windows.Navigation;
А затем, заменим код обработчика MyButton_Click на следующий:
private void MyButton_Click(object sender, RoutedEventArgs e)
{
NavigationService.GoBack();
}
Запустите приложение (F5) и убедитесь, что кнопка Обратно на второй странице возвращает приложение на MainPage.
Обратите внимание, что в коде, который запускается по нажатию кнопки мы не использовали название страницы, на которую нам необходимо перейти, а попросили сервис навигации, представленный классом NavigationService перейти на страницу, которая была в стеке переходов перед текущей.
События перехода с/на страницы могут быть обработаны програмно, например, чтобы уточнить у пользователя, действительно ли он хочет уйти с текущей страницы.
Добавьте следующий код в файл SecondPage.xaml.cs сразу после обработчика MyButton_Click:
protected override void OnNavigatingFrom(NavigatingCancelEventArgs e)
{
base.OnNavigatingFrom(e);
// Если можно отменить переход, уточним у пользователя, хочет ли он остаться на текущей странице
if (e.IsCancelable)
{
MessageBoxResult result = MessageBox.Show("Может быть останетесь?",
"Подтверждение перехода", MessageBoxButton.OKCancel);
if (result == MessageBoxResult.OK)
{
// Пользователь решил остаться
e.Cancel = true;
return;
}
}
}
Код достаточно прост и с ним можго разобраться самостоятельно.
Запустите приложение (F5) и обратите внимание, что уточняющий диалог отображается вне зависимости от того, собираемся вы вернуться на MainPage нажатием на кнопку или по ссылке.
Теперь осталось научиться передавать между страницами параметры.
Двойным щелчком по MainPage.xaml перейдём к редактированию основной страницы. В коде MainPage.xaml добавим элемент управления TextBox, выше элемента Button, как показано ниже:
<!--ContentPanel - place additional content here--> <Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0"> <TextBox Name="MyTextBox" Width="175" Height="75" Margin="140,185,140,350"/> <Button Content="Нажми меня" Name="MyButton" FontSize="18" Width="175" Height="75" Click="MyButton_Click"/> <HyperlinkButton Content="Вторая страница" Name="MyHyperlinkButton" FontSize="18" Width="175" Height="75" Margin="140,350,140,185" NavigateUri="/SecondPage.xaml"/> </Grid>
Двойным щелчком по SecondPage.xaml перейдём к редактированию основной страницы. В коде SecondPage.xaml добавим элемент управления TextBox, выше элемента Button, также как на странице MainPage:
<!--ContentPanel - place additional content here-->
<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
<TextBox Name="MyTextBox" Width="175" Height="75" Margin="140,185,140,350"/>
<Button Content="Обратно" Name="MyButton" FontSize="18" Width="175"
Height="75" Click="MyButton_Click" />
<HyperlinkButton Content="Первая страница" Name="MyHyperlinkButton" FontSize="18" Width="175"
Height="75" Margin="140,350,140,185" NavigateUri="/MainPage.xaml"/>
</Grid>
Теперь, в обработчик события MyButton_Click страницы MainPage добавим параметры в Uri перехода на вторую страницу по кнопке:
private void MyButton_Click(object sender, RoutedEventArgs e)
{
NavigationService.Navigate(new Uri("/SecondPage.xaml?text="+Uri.EscapeDataString(MyTextBox.Text),
UriKind.Relative));
}
И, наконец, в код страницы SecondPage.xaml.cs, сразу же после обработчика OnNavigatedFrom, добавим обработчик прихода на страницу OnNavigatedTo и в нем обработаем приходящий параметр и выведем его в MyTextBox:
protected override void OnNavigatedTo(NavigationEventArgs e)
{
base.OnNavigatedTo(e);
if (NavigationContext.QueryString.ContainsKey("text"))
{
MyTextBox.Text = NavigationContext.QueryString["text"].ToString();
}
}
Запустите приложение (F5) и проверьте, как оно работает, например, при переходе по ссылке со страницы MainPage на SecondPage.
Для получения официальных документов о завершении программы дополнительного профессионального образования (удостоверения о повышении квалификации, дипломов о профессиональной переподготовке и MBA) необходимо предоставить:
Внимание! Вы можете не заказывать доставку бумажной версии официального документы, а скачать его в электронном виде и распечатать самостоятельно. Информация о выданном документе в течение 1 месяца загружается в Федеральную информационную систему «Федеральный реестр сведений о документах об образовании и (или) о квалификации, документах об обучении» - ФИС ФРДО.
Доступ на новый сайт осуществляется с использованием адреса электронной почты, который был указан вами при регистрации на "старом". Мы постарались перенести все ваши данные с прежнего ресурса, однако не исключена вероятность потери части информации.
При возникновении проблемы со входом, воспользуйтесь функцией сброса пароля
Если вы обнаружите несоответствия, пожалуйста, сообщите нам.