我必須在我的一個應用程序中做類似的事情之前,被用作背景不旋轉但頁面上的其他項目。
代碼看起來有點像這樣:
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