Cover

Forcing Orientation in WinRT

June 21, 2013
No Comments.

I am working with a client on an enterprise Win8 app that is for order taking. They have a specific page that they require to be only in Portrait mode while the rest of the app can support any orientation. Since I’ve done so much Windows Phone 7/8 work I thought this would be simple. Just specify the value on the Page. But this didn’t work…

Digging through the docs I found a probable solution: **DisplayProperties.AutoRotationPreferences **(in the **Windows.Graphics.Display namespace). **The docs specify that this property can be set with the **DisplayOrientations **enumeration to specify which of the four orientations to support. The enumeration is a flag so you can combine them too:

// All orientations
DisplayProperties.AutoRotationPreferences = DisplayOrientations.None;

// Portrait only
DisplayProperties.AutoRotationPreferences = DisplayOrientations.Portrait;

// Landscape only
DisplayProperties.AutoRotationPreferences = DisplayOrientations.Landscape;

// Landscape and upside down landscape only
DisplayProperties.AutoRotationPreferences = DisplayOrientations.Landscape | 
                                            DisplayOrientations.LandscapeFlipped;

```csharp

Using these options should work, right? I tested it in a bunch of different places in my code and it didn't seem to have any effect. I was baffled.

<font color="#333333">Later I found an MSDN forum posting where they mentioned these work but only if the device has an accelerometer. This means on my laptop and even in the simulator these have *no* effect! When I did remote debugging to my Surface…it worked exactly the way I wanted it to work. Whew…the client never knew that I had to look it up.&nbsp; Unless he reads my blog that is ;)</font>

<font color="#333333"></font>