【问题标题】:How to limit orientation in metro apps?如何在 Metro 应用程序中限制方向?
【发布时间】:2012-09-18 19:59:59
【问题描述】:

在我的应用程序中,所有内容都仅处于横向模式。我不希望该应用程序在纵向模式下运行。如何限制方向?

谢谢。

【问题讨论】:

  • 不订阅方向改变事件(方向改变时不做任何事情)。
  • 在您的 appmanifest 文件中,您可以限制支持的方向。
  • 感谢您的回复,我已尝试在 Appmanifest 中使用限制性内容。但是当我旋转屏幕看到它们时,它们在纵向模式下变得有点奇怪。
  • 这个链接有一些关于管理方向的好东西(虽然不限制它):markermetro.com/2011/11/technical/…

标签: wpf windows-8 microsoft-metro landscape


【解决方案1】:

this link 中所述,应用程序的方向限制首选项设置仅在具有支持的硬件加速器的 Windows 8 系统上强制执行。这意味着除非 Windows 通过支持的传感器知道系统的方向,否则它不会尝试切换到应用的首选方向。

所以这一切都取决于用户的硬件。

【讨论】:

  • 完美.. 感谢您的回答。
【解决方案2】:

我遇到了这个问题,并且我想将我的游戏限制为仅横向模式。我把它放在 App.xaml 的 OnLaunched 处理程序中:

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

但是我注意到在模拟器中它似乎忽略了这一点,而在我测试的硬件平板电脑上它似乎表现得很好。 AutoRotationPreferences 是位标志,因此您可以或一起使用您想要允许的所有方向。

【讨论】:

  • 模拟器提示为我节省了时间
【解决方案3】:

对于希望回答此问题但不编写 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" );
}

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

所以我们实际上并没有限制方向,我们只是注意到它何时发生,并重新旋转我们的 UI,使其看起来仍然处于纵向模式 :) 这主要是针对非 Metro Win 8 应用程序和或也可以在 Win 7 平板电脑上运行的应用程序。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多