Главная » Разработка для Windows Phone 7 » События изменения ориентации экрана Windows Phone 7

0

Во многих приложениях на Silverlight, приводимых в данной книге, свойству SupportedOrientations будет задано значение PortraitOrLandscape, я постараюсь создавать не зависящие от ориентации экрана приложения. Для приложений на Silverlight, которые принимают текстовый ввод, критически важно, чтобы ориентация приложения соответствовала расположению клавиатуры (если таковая имеется). А то, как будет располагаться клавиатура, предвидеть невозможно.

Очевидно, что обработка изменений ориентации экрана выходит далеко за рамки задания свойства SupportedOrientations! В некоторых случаях требуется менять компоновку из кода класса страницы. Для реализации особой обработки в PhoneApplicationFrame и PhoneApplicationPage предусмотрены события OrientationChanged (Ориентация изменена). PhoneApplicationPage дополняет это событие удобным и защищенным методом OnOrientationChanged (При изменении ориентации), доступным для переопределения.

В классе MainPage в проекте SilverlightOrientationDisplay показано, как переопределяется OnOrientationChanged, но он используется лишь для вывода на экран текущей ориентации. Сетка для содержимого в этом проекте включает простой TextBlock:

Проект Silverlight: SilverlightOrientationDisplay Файл: MainPage.xaml (фрагмент)

<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0"> <TextBlock Name="txtblk"

HorizontalAlignment="Center" VerticalAlignment="Center" />

</Grid>

Рассмотрим полный файл выделенного кода. Конструктор при инициализации TextBlock присваивает его свойству Text текущее значение свойства Orientation (Ориентация), которое является элементом перечисления PageOrientation (Ориентация страницы):

Проект Silverlight: SilverlightOrientationDisplay Файл: MainPage.xaml.cs

using System.Windows.Controls; using Microsoft.Phone.Controls;

namespace SilverlightOrientationDisplay {

public partial class MainPage : PhoneApplicationPage {

public MainPage() {

InitializeComponent();

txtblk.Text = Orientation.ToString();

}

protected override void OnOrientationChanged(OrientationChangedEventArgs

args)

{

txtblk.Text = args.Orientation.ToString(); base.OnOrientationChanged(args);

}

}

}

Метод OnOrientationChanged получает новое значение из аргументов события.

Источник: Чарльз Петзольд, Программируем Windows Phone 7, Microsoft Press, © 2011.

По теме:

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