← Tutti gli articoli
Orientation detection in your Windows Phone 7
13 May 2011 ·
Windows Phone 7 · Article ·
872 visite
How to detect in your application the orientation the device is currently in.
Prerequisites:
- set the SupportedOrientations = PortraitOrLandscape
- add the event OrientationChanged="PageOrientationChanged"
- <phone:PhoneApplicationPage
- x:Class="WindowsPhoneApplication2.MainPage"
- xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
- xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
- xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone"
- xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone"
- xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
- xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
- mc:Ignorable="d" d:DesignWidth="480" d:DesignHeight="768"
- FontFamily="{StaticResource PhoneFontFamilyNormal}"
- FontSize="{StaticResource PhoneFontSizeNormal}"
- Foreground="{StaticResource PhoneForegroundBrush}"
- SupportedOrientations="PortraitOrLandscape" Orientation="None"
- OrientationChanged="PageOrientationChanged"
- shell:SystemTray.IsVisible="True">
- <!--LayoutRoot is the root grid where all page content is placed-->
- <Grid x:Name="LayoutRoot" Background="Transparent">
- <Grid.RowDefinitions>
- <RowDefinition Height="Auto"/>
- <RowDefinition Height="*"/>
- </Grid.RowDefinitions>
- <!--TitlePanel contains the name of the application and page title-->
- <StackPanel x:Name="TitlePanel" Grid.Row="0" Margin="12,17,0,28">
- <TextBlock x:Name="ApplicationTitle" Text="MY APPLICATION" Style="{StaticResource PhoneTextNormalStyle}"/>
- <TextBlock x:Name="PageTitle" Text="page name" Margin="9,-7,0,0" Style="{StaticResource PhoneTextTitle1Style}"/>
- </StackPanel>
- <!--ContentPanel - place additional content here-->
- <Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
- <TextBox Height="72" HorizontalAlignment="Left" Margin="35,143,0,0" Name="textBox1" Text="TextBox" VerticalAlignment="Top" Width="460" />
- </Grid>
- </Grid>
- </phone:PhoneApplicationPage>
In your code behid:
// Constructor
public MainPage()
{
InitializeComponent();
//this.SupportedOrientations = SupportedPageOrientation.Portrait | SupportedPageOrientation.Landscape;
}
private void PageOrientationChanged(object sender, OrientationChangedEventArgs e)
{
base.OnOrientationChanged(e);
var orientation = this.Orientation;
switch (orientation){
case PageOrientation.Portrait:
case PageOrientation.PortraitUp:
case PageOrientation.PortraitDown:
textBox1.Text="Portrait";
break;
case PageOrientation.Landscape:
case PageOrientation.LandscapeLeft:
case PageOrientation.LandscapeRight:
textBox1.Text="Landscape";
break;
}
}