私は数年間Androidアプリケーションを書いていますが、今はWindows Store/Windows 8アプリケーションを開発しています。Windows 8ストアアプリケーションの開発中にさまざまな向きを扱う
私は、風景と肖像画の向きに異なる画面レイアウトを書き込む方法について非常に混乱しています。
Androidでは、ファイル名のいくつかの命名規則に従い、2つのレイアウトを縦書き用と横書き用に書き出す必要があります。デバイスを回転させると、プラットフォームによって画面レイアウトが自動的に変更されます。
私はWindows 8アプリケーションで同じことを行うためのいくつかのソリューションを探していました。私は、Visual State GroupsとVisual Statesを使用して解決策を見つけました。同じXAMLをいくつか変更しました。ウィジェットを回転させると例えば
、私は縦方向にデバイスを回転させたときにテキストブロックがその位置を変更するには:
<VisualState x:Name="FullScreenPortrait" >
<Storyboard>
<ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(Grid.ColumnSpan)" Storyboard.TargetName="GridViewTitle">
<DiscreteObjectKeyFrame KeyTime="0">
<DiscreteObjectKeyFrame.Value>
<x:Int32>3</x:Int32>
</DiscreteObjectKeyFrame.Value>
</DiscreteObjectKeyFrame>
</ObjectAnimationUsingKeyFrames>
<ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(FrameworkElement.Margin)" Storyboard.TargetName="GridViewTitle">
<DiscreteObjectKeyFrame KeyTime="0">
<DiscreteObjectKeyFrame.Value>
<Thickness>0,10,10,807</Thickness>
</DiscreteObjectKeyFrame.Value>
</DiscreteObjectKeyFrame>
</ObjectAnimationUsingKeyFrames>
</Storyboard>
</VisualState>
それは私にとって非常にクリーンでシンプルに見える、とさえVisual Studioの者を使用していることをやっていませんウィジェットをドラッグ&ドロップしてコードを生成するアプローチ私がやっていることよりも簡単で洗練されたソリューションが必要であるという印象があります。
私の質問は、XAMLレイアウトを各方向に書き込む方が簡単かどうかですか?
ありがとうございます!
うーん。それはいいようですが、私のコードでは、いくつかのグリッドビューの選択されたコンテンツを処理する必要があるので、 'if(portrait){handle_my_gridview_portrait(); } else {ハンドル_my_gridview_landscape(); } '。とにかく、私の現在のソリューションよりも優れています。ありがとう! –
上記のサンプルは、姿勢の変化をさまざまに検出する方法を示しています。ただし、DataContextの値を変更してBindingを使用すると、コードビハインドも回避できます。 – kimsk
この質問に対する両方の回答は良好でしたが、私の問題はあなたの方が適切でした。ありがとう、遅れてごめんなさい! –