2012-09-27 11 views
7

W mojej aplikacji wszystkie pliki są tylko w trybie poziomym. Nie chcę, aby aplikacja działała w trybie portretu. Jak ograniczyć orientację?Jak ograniczyć orientację w aplikacjach metra?

Dzięki.

+2

Nie robiąc subskrypcji dla zdarzenia o zmienionej orientacji (nie robi nic podczas zmiany orientacji). –

+0

W swoim pliku programu, możesz ograniczyć obsługiwane orientacje. –

+0

Dzięki za odpowiedź, próbowałem używać ograniczających rzeczy w Appmanifest. Ale kiedy obracam swój ekran i widzę je, stają się trochę dziwne w trybie portretu. – indiaxxo

Odpowiedz

4

Zgodnie z objaśnieniami w sekcji this link ustawienie preferencji ograniczenia orientacji aplikacji jest egzekwowane tylko w systemie Windows 8 z obsługiwanym ACCELEROMETER SPRZĘTEM. Oznacza to, że jeśli system Windows nie rozpozna orientacji systemu za pomocą obsługiwanego czujnika, nie będzie próbował przełączyć się na preferowaną orientację aplikacji.

Wszystko zależy od sprzętu użytkownika.

+0

Idealny .. Dzięki za ans. – indiaxxo

4

Miałem ten problem tak dobrze, jak chciałem ograniczyć moją grę do trybu tylko krajobrazu. Ja to w moim OnLaunched obsługi dla App.xaml:

 Windows.Graphics.Display.DisplayProperties.AutoRotationPreferences = 
      Windows.Graphics.Display.DisplayOrientations.Landscape; 

Jednak zauważyłem, że w symulatorze wydawało się zignorować to natomiast na tablecie sprzętowej I testowane na wydawało się zachowywać odpowiednio. Polecenia AutoRotationPreferences to flagi bitów, dzięki czemu można wybrać wszystkie orientacje, które mają być dozwolone.

+0

końcówka symulatora zaoszczędziła mi czas – root

0

Dla osób szukających odpowiedzi na to pytanie, które nie są pisania aplikacji Metro (w którym można ustawić preferowane kierunki w manifeście lub mieć dostęp do Windows.Graphics.Display.DisplayProperties.AutoRotationPreferences) ...

Nie ma prawdziwego sposób, by nie pozwolić zmiana Orientacja, jednak jeśli jesteś zainteresowany tylko pozwalając krajobrazu można zrobić coś takiego:

Zobacz model:

Microsoft.Win32.SystemEvents.DisplaySettingsChanged += new   
    EventHandler(SystemEvents_DisplaySettingsChanged); 
} 

public bool IsLandscape { get; set; } 

void SystemEvents_DisplaySettingsChanged(object sender, EventArgs e) 
{ 
    if (SystemParameters.PrimaryScreenWidth > SystemParameters.PrimaryScreenHeight) 
    { 
     IsLandscape = true; 
    } 
    else 
    { 
     IsLandscape = false; 
    } 

    RaisePropertyChanged("IsLandscape"); 
} 

w tobie Main Window.xaml:

<Border > 
    <Border.Style> 
     <Style TargetType="{x:Type Border}"> 
      <Style.Triggers> 
       <DataTrigger Binding="{Binding IsLandscape}" Value="False"> 
        <Setter Property="LayoutTransform"> 
         <Setter.Value> 
          <RotateTransform Angle="90"/> 
         </Setter.Value> 
        </Setter> 
       </DataTrigger> 
      </Style.Triggers> 
     </Style> 
    </Border.Style> 

///The rest of your controls and UI 

</Border> 

Tak naprawdę nie ograniczamy orientacji, zauważamy tylko, kiedy to się dzieje, i ponownie obracamy nasz interfejs, więc nadal wygląda tak, jak jest w trybie portretowym :) Znowu jest to głównie dla non-win Win 8 aplikacje i aplikacje działające na tabletach Win 7.