在我的应用程序中,所有的东西都只处于横向模式。我不希望应用程序在纵向模式下运行。如何限制方向?
谢谢。
如此链接中所述,应用程序的方向限制首选项设置仅在具有受支持的硬件加速计的 Windows 8 系统上强制执行。这意味着除非 Windows 通过支持的传感器知道系统如何定位,否则它不会尝试切换到应用程序的首选方向。
所以这一切都取决于用户的硬件。
我遇到了这个问题,并且我想将我的游戏限制为仅横向模式。我把它放在 App.xaml 的 OnLaunched 处理程序中:
Windows.Graphics.Display.DisplayProperties.AutoRotationPreferences =
Windows.Graphics.Display.DisplayOrientations.Landscape;
但是我注意到在模拟器中它似乎忽略了这一点,而在我测试的硬件平板电脑上它似乎表现得很好。AutoRotationPreferences 是位标志,因此您可以或一起使用您想要允许的所有方向。
对于希望回答这个问题的人不编写 Metro 应用程序(您可以在清单中设置首选方向或有权访问Windows.Graphics.Display.DisplayProperties.AutoRotationPreferences
)...
没有真正的方法可以不让方向改变,但是如果您对只允许 Landscape 感兴趣,您可以执行以下操作:
查看型号:
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>
所以我们实际上并没有限制方向,我们只是注意到它何时发生,并重新旋转我们的 UI,使其看起来仍然处于纵向模式 :) 这主要是针对非 Metro Win 8 应用程序和/或应用程序在 Win 7 平板电脑上运行。