2014-01-06 2 views
0

Интересно, как я могу проверить текущую ориентацию непосредственно при запуске (MainPage LoadedEvent).Как проверить ориентацию при запуске приложения Windows Phone 8?

следующий код не работает:

public MainPage() 
    { 
     InitializeComponent(); 

     Loaded += MainPage_Loaded; 

    } 

    void MainPage_Loaded(object sender, RoutedEventArgs e) 
    { 
     Debug.WriteLine(Orientation); 
     if (Orientation == PageOrientation.Landscape || Orientation == PageOrientation.LandscapeLeft) 
      Debug.WriteLine("Simulator and Device won't jump in here on startup (always PortraitUp)..."); 
    } 

Почему это ведет себя таким образом? И где я могу правильно ориентироваться?

(Я включил SupportedOrientations="PortraitOrLandscape" и приложение отображается в альбомной ориентации непосредственно с самого начала.)

Ps .: конечно же устройства и симулятором в ландшафте при запуске;)

ответ

1

Вы добавили Ориентация имущество?

<phone:PhoneApplicationPage 
    x:Class="Orientation.MainPage" 
    SupportedOrientations="PortraitOrLandscape" Orientation="Landscape" 
    > 
+0

Это похоже на сделку. Я добавил (как упоминалось выше) 'SupportedOrientations =" ​​PortraitOrLandscape "' - В отличие от вашего примера у меня есть «Ориентация =« Портрет ». Если я изменю это на Пейзаж, у меня есть противоположная проблема, всегда показывающая ориентационный пейзаж. - Как-то я могу понять это поведение, потому что это место по умолчанию, но мне все еще интересно, как я могу решить свою проблему? Может быть, с другим подходом? Прямо сейчас я думаю, что регистрации события orientationChanged может быть достаточно. Но есть ли другой путь? – malte

+0

Помогла ли вам подписка на мероприятие OrientationChanged? –

+0

Извините за поздний ответ. Здесь много вещей. 'OrientationChanged =" MainPage_OnOrientationChanged "' Подписка на события (в основном) работает. Но если я хочу убедиться, что это происходит только один раз на странице навигации, я должен добавить неприятный глобальный bool. Мне бы очень хотелось, чтобы это было сделано в конструкторе. Но я полагаю, что тогда нет шансов? :/ – malte

-1

https://www.google.co.in/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&cad=rja&uact=8&ved=0CB0QFjAA&url=https%3A%2F%2Fmsdn.microsoft.com%2Fen-us%2Flibrary%2Fwindows%2Fapps%2Fjj207002%2528v%3Dvs.105%2529.aspx&ei=i95SVeCDG8XJuASUwYGYDQ&usg=AFQjCNGC1xSQUv7Ge6t0hbGP0hfdV8dYtw

Надежда это то, что вы ищете

private void PhoneApplicationPage_OrientationChanged(object sender, OrientationChangedEventArgs e) 
{ 

if ((e.Orientation & PageOrientation.Portrait) == (PageOrientation.Portrait)) 
{ 
    // if portrait 
} 

else 
{ 
    // If landscape 
} 
} 

в вашем следующем XAML коде:

<phone:PhoneApplicationPage 
x:Class="Orientation.MainPage" 
SupportedOrientations="PortraitOrLandscape" Orientation="Landscape" 
> 

включают OrientationChanged = "PhoneApplicationPage_OrientationChanged"

 <phone:PhoneApplicationPage 
       x:Class="Orientation.MainPage" 
       SupportedOrientations="PortraitOrLandscape"     
       OrientationChanged="PhoneApplicationPage_OrientationChanged" 
     > 
+0

Хотя эта ссылка может ответить на вопрос, лучше включить здесь основные части ответа и предоставить ссылку для справки. Ответные ссылки могут стать недействительными, если связанная страница изменится. – Anthon

+0

отредактировал мой ответ. –

Смежные вопросы