← 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"
  1. <phone:PhoneApplicationPage   
  2.     x:Class="WindowsPhoneApplication2.MainPage"  
  3.     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"  
  4.     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"  
  5.     xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone"  
  6.     xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone"  
  7.     xmlns:d="http://schemas.microsoft.com/expression/blend/2008"  
  8.     xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"  
  9.     mc:Ignorable="d" d:DesignWidth="480" d:DesignHeight="768"  
  10.     FontFamily="{StaticResource PhoneFontFamilyNormal}"  
  11.     FontSize="{StaticResource PhoneFontSizeNormal}"  
  12.     Foreground="{StaticResource PhoneForegroundBrush}"  
  13.     SupportedOrientations="PortraitOrLandscape" Orientation="None"  
  14.     OrientationChanged="PageOrientationChanged"  
  15.     shell:SystemTray.IsVisible="True">  
  16.   
  17.     <!--LayoutRoot is the root grid where all page content is placed-->  
  18.     <Grid x:Name="LayoutRoot" Background="Transparent">  
  19.         <Grid.RowDefinitions>  
  20.             <RowDefinition Height="Auto"/>  
  21.             <RowDefinition Height="*"/>  
  22.         </Grid.RowDefinitions>  
  23.   
  24.         <!--TitlePanel contains the name of the application and page title-->  
  25.         <StackPanel x:Name="TitlePanel" Grid.Row="0" Margin="12,17,0,28">  
  26.             <TextBlock x:Name="ApplicationTitle" Text="MY APPLICATION" Style="{StaticResource PhoneTextNormalStyle}"/>  
  27.             <TextBlock x:Name="PageTitle" Text="page name" Margin="9,-7,0,0" Style="{StaticResource PhoneTextTitle1Style}"/>  
  28.         </StackPanel>  
  29.   
  30.         <!--ContentPanel - place additional content here-->  
  31.         <Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">  
  32.             <TextBox Height="72" HorizontalAlignment="Left" Margin="35,143,0,0" Name="textBox1" Text="TextBox" VerticalAlignment="Top" Width="460" />  
  33.         </Grid>  
  34.     </Grid>  
  35.    
  36.       
  37. </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;
            }
            
            
        }


Si è verificato un errore imprevisto. Ricarica

Rejoining the server...

Rejoin failed... trying again in seconds.

Failed to rejoin.
Please retry or reload the page.

The session has been paused by the server.

Failed to resume the session.
Please retry or reload the page.