我必须在我的一个应用程序中做类似的事情之前,被用作背景不旋转但页面上的其他项目。
代码看起来有点像这样:
protected override void OnOrientationChanged(OrientationChangedEventArgs e)
{
// Keep the image in the same position as in portrait
// But still allows other controls to rotate when orientation changes.
switch (e.Orientation)
{
case PageOrientation.LandscapeRight:
ForegroundImage.RenderTransform = new CompositeTransform { Rotation = 90 };
ForegroundImage.RenderTransformOrigin = new Point(0.5, 0.5);
ForegroundImage.Margin = new Thickness(158.592, -158.792, 158.592, -160.558);
break;
case PageOrientation.LandscapeLeft:
ForegroundImage.RenderTransform = new CompositeTransform { Rotation = 270 };
ForegroundImage.RenderTransformOrigin = new Point(0.5, 0.5);
ForegroundImage.Margin = new Thickness(158.592, -158.792, 158.592, -160.558);
break;
default: // case PageOrientation.PortraitUp:
ForegroundImage.RenderTransform = null;
ForegroundImage.RenderTransformOrigin = new Point(0, 0);
ForegroundImage.Margin = new Thickness();
break;
}
base.OnOrientationChanged(e);
}
不幸的身边没有真正的工作,为系统托盘或应用程序栏。对于系统托盘,您可以隐藏它,然后仅当用户在屏幕的该部分附近轻敲或滑动时才显示它(一段时间)。
谢谢 - 但你只会得到,如果你支持更多比肖像方向。 (我也试过这样做,然后不把消息传递给基类......它变得凌乱了!) – Stuart 2012-02-02 13:04:57
啊,有趣的是,即使'SupportedOrientation'没有设置,我认为它会触发。 '在旋转手机或SupportedOrientations属性发生变化后发生。' – keyboardP 2012-02-02 13:11:06
@Stuart - 您可能会发现此入门工具包中的'Orientation Helper'类有用。它使用加速度计,所以我想你必须使用它,但它可以节省你的时间推出自己的版本:http://msdn.microsoft.com/en-us/library/gg442298%28VS.92% 29.aspx#Customizing_Behavior – keyboardP 2012-02-02 13:19:16