C# Windows 8中的句柄方向

C# Windows 8中的句柄方向,c#,xaml,windows-8,microsoft-metro,C#,Xaml,Windows 8,Microsoft Metro,A希望创建一个Metro风格的Windows 8应用程序,该应用程序不旋转根网格,所有内容都处于纵向模式。我想在code和视觉状态下处理方向,但现在当我旋转设备时,所有内容都会自动旋转并填充新的宽度和高度 如何禁用此旋转行为,即禁用纵向方向,但仍然能够获取有关方向更改的事件 另外,Windows.Graphics.Display.DisplayProperties.AutoRotationPreferences似乎不起作用当Windows说您处于纵向模式时,向根元素添加一个旋转变换器,该旋转变换

A希望创建一个Metro风格的Windows 8应用程序,该应用程序不旋转根
网格
,所有内容都处于
纵向
模式。我想在
code
视觉状态下处理方向,但现在当我旋转设备时,所有内容都会自动旋转并填充新的宽度和高度

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


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

当Windows说您处于纵向模式时,向根元素添加一个旋转变换器,该旋转变换器可对其进行计数并使其保持纵向渲染

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

如果您编写自己的appx manifiest,可以在第节下添加以下块,如下所示

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


很抱歉,我没有回答你的主要问题。我不认为在纵向模式事件之后可以更改根元素的“旋转”。因为它实际上不是相对于屏幕旋转的,而是屏幕大小改变了


但是,我想在纵向模式事件之后,您仍然希望用户以横向模式查看您的应用程序。您可以抵消感知的旋转。您可以将业务逻辑放在另一个用户控件中,而无需预定义大小。将此用户控件放在根页面中。收到纵向模式事件时,将页面实际宽度指定给用户控件高度,将页面实际高度指定给用户控件宽度,将渲染变换指定给用户控件90度,并将渲染变换中心x=高度*0.707/宽度,y=0.5,然后用户控件应仅与横向模式位置对齐

但是根元素填充了新的布局尺寸,即交换了
高度
宽度
,旋转后根元素将不会占用所有可用空间,并将在侧面和横档上进行裁剪以获得答案。问题是我需要接收方向更改事件,但在方向更改时禁用布局中的自动更改,因此请注意模拟器不尊重这些设置。您必须在实际设备上测试这些!!天知道为什么。希望微软能解决这个问题。我之前考虑过这样的方法,但在轮换之后,我在侧面得到了一个裁剪控制。也许有一些解决办法,但短期的研究并没有给我一个结果。嗨,你有更好的解决这个问题的方法吗?