繁体   English   中英

在Windows 8中处理方向

[英]Handle orientations in Windows 8

想要创建一个Metro Style Windows 8应用程序,该应用程序不会在Portrait模式下旋转所有内容的根Grid 我想在CodeVisual States处理方向,但现在当我旋转设备时,所有内容都会自动旋转并填充新的宽度和高度。

如何禁用此旋转行为,即禁用Portrait方向,但仍能够获取有关方向更改的事件?

此外, Windows.Graphics.Display.DisplayProperties.AutoRotationPreferences似乎不起作用

双击metro应用程序项目中的“Package.appxmanifest”文件,您应该会看到应用程序的配置。 在“应用程序UI”页面中,您可以在中间找到“支持的旋转”。 您可以检查支持的模式,并取消选中“纵向”模式。 然后你的应用程序将不再接收任何“肖像”模式事件。

如果你编写自己的appx最明显,你可以添加以下块,如下所示

    <InitialRotationPreference>
      <Rotation Preference="landscape" />
      <Rotation Preference="portraitFlipped" />
      <Rotation Preference="landscapeFlipped" />
    </InitialRotationPreference>

当Windows表示您处于纵向模式时,请向您的根元素添加一个rotatetransform,以对抗该元素,并使事物呈现为纵向

抱歉,我错过了你的主要问题。 我不认为你可以在肖像模式事件后更改根元素的“旋转”。 因为它实际上没有相对于屏幕旋转,但屏幕尺寸发生了变化。

但是,我想您仍然希望用户在纵向模式事件后以横向模式查看您的应用程序。 你可以对抗感知的旋转。 您可以将业务逻辑放在另一个没有预定义大小的用户控件中。 将此用户控件放在根页面中。 当您收到纵向模式事件时,将页面ActualWidth分配给用户控制高度,将ActualHeight页面指定给用户控件宽度,给予用户控件90度渲染变换并渲染变换中心x =高度* 0.707 /宽度,y = 0.5,然后用户控件应该只对齐横向模式位置。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM