2012-09-27 73 views
7

在我的應用程序中,所有的東西只在橫向模式下。我不希望應用在肖像模式下正常工作。我如何限制方向?如何限制metro應用程序的方向?

謝謝。

+2

通過不做訂閱改變方向的事件(當方向改變時不做任何事情)。 –

+0

在您的appmanifest文件中,您可以限制支持的方向。 –

+0

感謝您的回覆,我嘗試在Appmanifest中使用限制性內容。但是當我旋轉屏幕並看到它們時,它們在肖像模式下變得有點怪異。 – indiaxxo

回答

4

this link解釋了應用程序的方向限制偏好設置僅執行了支持的硬件加速度計的Windows 8系統。這意味着除非Windows知道系統如何通過支持的傳感器來定位,否則它不會嘗試切換到應用程序的首選方向。

所以它都將取決於用戶的硬件。

+0

完美..謝謝你的答覆。 – indiaxxo

4

我有這個問題,以及我想限制我的遊戲只有橫向模式。我把這個在我OnLaunched處理程序的App.xaml:

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

不過,我注意到,在模擬器似乎忽略這一點,而在我測試了它似乎表現得適當硬件的平板電腦。 AutoRotationPreferences是位標記,因此您可以或者將所有方向放在一起。

+0

模擬器提示節省了我的時間 – root

0

尋找人來回答這個問題誰不編寫Metro應用(在那裏你可以在清單設置擇優取向或訪問Windows.Graphics.Display.DisplayProperties.AutoRotationPreferences)...

有沒有真正的辦法不讓取向的變化,但是如果你有興趣,只允許景觀,你可以做這樣的事情:

視圖模型:

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"); 
} 

在你主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> 

所以我們真的沒有限制方向,我們只是注意到它發生的時間,並重新旋轉我們的用戶界面,因此它仍然看起來像是在肖像模式下:)再次,這主要是針對非Metro Win 8應用程序和或運行在Win 7平板電腦上的應用程序。

相關問題