Главная » Silverlight » Полноэкранный режим

0

Приложения Silverlight могут переключаться в полноэкранный режим, что по­зволяет им выйти из окна браузера. В полноэкранном режиме надстройка Silverlight заполняет весь экран и выводит свое изображение поверх всех других приложений, включая браузер.

Ниже перечислены ограничения полноэкранного режима.

•       Переключение в полноэкранный режим может произойти только в резуль­тате какого-либо действия пользователя. Переключение происходит, когда пользователь щелкает кнопкой мыши или нажимает клавишу. Приложение не может переключиться в полноэкранный режим непосредственно после загрузки. Если попытаться сделать это, код переключения будет проигнорирован. Данное ограничение введено для того, чтобы приложение Silverlight не могло "обмануть" пользователя, имитируя другие локальные приложения или системные окна.

•       В полноэкранном режиме для пользователя доступны не все клавиши. Код

может реагировать на следующие клавиши: <Tab>, <Enter>, <Home>, <End>, <PageUp>, <PageDown>, <Пробел>, <?>, <?>, <?> и <?>. Остальные клавиши иг­норируются. Это означает, что разработчик может создать простую игру, но не может применить текстовые поля и другие средства ввода. Данное ограничение добавлено для того, чтобы предотвратить кражу паролей (в противном случае зловредный код мог бы побудить пользователя ввести пароль, имитируя диало­говое окно Windows).

Примечание. Первоначально полноэкранный режим предназначался для отображения видеосодержимого в большом окне. В версии Silverlight 1 в полноэкранном режиме недоступна ни одна клавиша. В более поздних версиях доступны клавиши выбора, которых достаточно для создания простых графических приложений (например, игр или браузера фотографий). В полноэкранном режиме можно обрабатывать нажатие клавиш, когда ни один элемент ввода не имеет фокуса. Для этого нужно подключить обработчик к стандартному событию KeyPress. Например, обработчик KeyPress можно добавить в корневой контейнер для перехвата всех нажатий клавиш.

Ниже приведен код обработчика, который в ответ на щелчок кнопкой мыши пере­ключает приложение в полноэкранный режим.

private void Button_Click(object sender, RoutedEventArgs e)

{

Application.Current.Host.Content.IsFuilScreen = true;

}

В момент переключения в полноэкранный режим приложение выводит на экран со­общение, показанное на рис. 3.20. Сообщение содержит адрес домена, в котором рас­положено приложение. При использовании сайта ASP.NET и встроенного веб-сервера Visual Studio выводится адрес http://localhost. Если приложение хостируется тесто­вой страницей HTML, хранящейся на жестком диске, выводится адрес file://. Кроме того, сообщение содержит текст Нажмите клавишу <Esc> для выхода из полноэкранного режима (см. рис. 3.20), чтобы пользователь не оказался в неприятной ситуации, не зная, как выйти из него. Задать выход из полноэкранного режима в коде можно, присвоив свойству IsFuilScreen значение false.

Рис. 3.20. Сообщение, выводимое при переключении в полноэкранный режим

Чтобы воспользоваться преимуществами полноэкранного режима, элементу UserControl не должны быть присвоены фиксированные значения Height (Высота) или Width (Ширина). Тогда он сможет занять все доступное пространство. Кроме того, в приложении можно применить масштабирование, как описано в предыдущем разде­ле, чтобы при переходе в полноэкранный режим увеличить элементы управления (по­скольку им уже нет необходимости тесниться в ограниченном пространстве).

Резюме

В этой главе рассмотрена модель верстки страниц Silverlight и описано размещение элементов в контейнерах разных типов. Используя вложение контейнеров друг в друта, можно создавать довольно сложные структуры. Разделитель GridSplitter позволяет из­менять размеры разделов страницы путем перетаскивания. Здесь также рассмотрено создание пользовательских контейнеров, реализующих специальные визуальные эф­фекты. В конце главы описано управление элементами верхнего уровня, хостирующими всю структуру, с целью изменения размеров, масштабирования и вывода содержимого в разных контейнерах.

Зависимые свойства и маршрутизируемые события

В данный момент вам, конечно, не терпится изучить более реалистичные, прак­тические, примеры приложений Silverlight. Однако сначала нужно освоить не­сколько фундаментальных концепций. В этой главе вы ознакомитесь с двумя ключе­выми концепциями Silverlight: зависимыми свойствами и маршрутизируемыми собы­тиями.

Обе концепции впервые появились в WPF ("старшая сестра" технологии Silverlight). Для большинства разработчиков они стали немалым сюрпризом. Никто не ожидал, что в устоявшейся технологии пользовательских интерфейсов будет изменена базовая аб­стракция объектов .NET. Однако изменения, введенные в WPF, предназначены не для улучшения .NET, а для поддержки ключевых средств WPF. Новая модель свойств позво­ляет внедрять элементы WPF в ряд важных средств, таких как связывание данных, ани­мация, стили. Новая модель событий позволяет применить в WPF многоуровневую мо­дель содержимого (см. главу 5) без усложнения процедуры реагирования на действия пользователей, такие как щелчки мышью и нажатия клавиш.

Обе эти концепции Silverlight заимствует у WPF. В данной главе вы увидите, как они реализованы в Silverlight.

Новые средства. В Silverlight 3 зависимые свойства и маршрутизируемые события работают точно так же, как в предыдущей версии. Однако появилось одно новое событие на основе класса UIElement, а именно — событие MouseWheel, позволяющее создать реакцию на поворот колесика мыши (см. далее). К сожалению, в настоящий момент это событие срабатывает только в браузерах IE в операционной системе Windows.

Зависимые свойства

Зависимое свойство (dependency property) отличается от обычного тем, что мо­жет быть установлено как непосредственно (например, в коде), так и одной из служб Silverlight (например, службой связывания данных, стилей или анимации). Ключевое средство зависимых свойств — приоритеты их провайдеров. Например, анимация, пока выполняется, имеет более высокий приоритет, чем любая другая служба. Все перечис­ленные факторы делают зависимые свойства весьма гибким средством кодирования.

Отсюда же они получили свое название: они зависят от многих провайдеров свойств, каждый из которых обладает собственным уровнем приоритета.

Большинство свойств, предоставляемых элементами Silverlight, являются зависи­мыми. Например, свойство Text элемента TextBox, свойство Content элемента Button, свойство Background элемента Grid — все они зависимые. Один из важнейших прин­ципов зависимых свойств Silverlight состоит в том, что они используются так же, как обычные. Это обусловлено тем, что все зависимые свойства, предоставляемые библио­теками Silverlight, заключены в оболочку определения обычных свойств.

Зависимое свойство можно читать и изменять в коде, как обычное, однако "за кули­сами" оно реализовано существенно иначе. Главная причина этого — стремление повы­сить производительность. Если бы разработчики платформы Silverlight всего лишь до­бавили несколько средств поверх системы свойств .NET, им пришлось бы создать гро­моздкий слой кода, через который приложению нужно было бы пройти при каждом об­ращении к свойству. Обычные свойства не могут поддерживать все средства зависимых свойств без дополнительных накладных расходов.

Совет. Чтобы обратиться к свойству, не нужно знать, зависимое оно или обычное. Однако некоторые средства Silverlight поддерживаются только зависимыми свойствами. Более того, чтобы определить зависимое свойство в пользовательском классе, нужно понимать, как оно работает.

Источник: Мак-Дональд, Мэтью. Silverlight 3 с примерами на С# для профессионалов. : Пер. с англ. —- М. : ООО «И.Д. Вильяме», 2010. — 656 с. : ил. — Парал. тит. англ.

По теме:

  • Комментарии