2011-11-30 4 views
6

私は、縦向きのタブレットでアプリケーションを開発しています。WPFオリエンテーション

ただし、タブレットを横向きにすると、アプリケーションも回転し、すべての配置が解除されます。 WPFアプリケーションを単一の方向にロックする方法はありますか?

ありがとうございました!

+1

あなたの質問に直接答えは出ませんが、流暢なレイアウトを使用するようにUIを再設計した場合、ユーザーはタブレットを横向きにすると横向きにUIが見えなくなります。 WPFには流暢なレイアウトを行うための多くのオプションがあります。 –

+0

キャンバスを使用してレイアウトを行っていますか? –

答えて

6

私はMartinに同意しなければなりません:自分でTablet PC Appsを開発しました。横向きと縦向きでうまく機能するレイアウトを提供する必要があります。

Microsoft.Win32.SystemEvents.DisplaySettingsChanged += new EventHandler(SystemEvents_DisplaySettingsChanged); 
} 

void SystemEvents_DisplaySettingsChanged(object sender, EventArgs e) 
{ 
    if (SystemParameters.PrimaryScreenWidth > SystemParameters.PrimaryScreenHeight) 
    { 
    // runs in landscape 
    } 
    else 
    { 
    // runs in portrait 
    } 
} 
0

が、私はタブレット用のWPFアプリケーションを開発する際に、同じ問題に出くわしたと検出する方法を説明するMSDNからこの記事を見つけた:以外にも、あなたが向きの変化をこのように検出できることから

画面の回転と向き: http://msdn.microsoft.com/en-us/library/ms812142.aspx

+0

この記事はWindows XP Tablet PC Edition 2005用です – Indy9000

0

私は画面の向きをロックするためのパブリックAPIを知らない。主に、タブレットPCのメーカーが、加速度計のデータを使用して向きを変える独自のユーティリティまたはドライバを提供していたためです。これは、OSの機能に組み込まれていませんでした。これはWindows 8で変更される可能性があります。

ロックの向きと同じではありませんが、ルートコンテナのLayoutTransformに回転トランスフォームを追加することで、向きの変更に対処することができます。これによりレイアウトスペースが変更されるため、アプリケーションはまだ90度回転していると思っていましたが、残りのOSは同意しませんでした。したがって、実際にはフルスクリーンアプリケーションにのみ実用的です。

2

スヴェンは、あなたが(あなたがマニフェストに優先方向を設定することができます)メトロアプリを書いていない場合は、NOTへの現実的な方法はありません

...オリエンテーションの変化を検出する方法を示す良い仕事をしていませんあなたのメインWindow.xamlで

Microsoft.Win32.SystemEvents.DisplaySettingsChanged += new   
    EventHandler(SystemEvents_DisplaySettingsChanged); 
} 

public bool IsLandscape { get; set; } 

void SystemEvents_DisplaySettingsChanged(object sender, EventArgs e) 
{ 
    if (SystemParameters.PrimaryScreenWidth > SystemParameters.PrimaryScreenHeight) 
    { 
     IsLandscape = true; 
    } 
    else 
    { 
     IsLandscape = false; 
    } 

    RaisePropertyChanged("IsLandscape"); 
} 

ビューモデル:あなたが唯一の肖像画は、あなたがこのような何かを行うことができるように興味があるがあれば、向きの変更を聞かせて

<Border > 
    <Border.Style> 
     <Style TargetType="{x:Type Border}"> 
      <Style.Triggers> 
       <DataTrigger Binding="{Binding IsLandscape}" Value="True"> 
        <Setter Property="LayoutTransform"> 
         <Setter.Value> 
          <RotateTransform Angle="90"/> 
         </Setter.Value> 
        </Setter> 
       </DataTrigger> 
      </Style.Triggers> 
     </Style> 
    </Border.Style> 

///The rest of your controls and UI 

</Border> 

Orientationは実際には制限されていません。発生したときに気づき、UIを回転してポートレートモードになっているように見えます:)これは主にMetro Win 8以外のアプリケーションWin 7タブレットでも動作するアプリケーションなどがあります。

+0

これは良い解決策ではないようですが、ゲームを回転させる必要がないゲームがいくつか見えたので、ゲームをプレイするときにポートレートモードを無効にすることができます。 – qakmak

関連する問題