5

数年間 Android アプリケーションを作成しており、現在は Windows ストア/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 レイアウトを記述するためのより簡単な解決策はありますか、それとも正しい方法ですが、難しい方法ですか?

ありがとう!

4

3 に答える 3

0

以前、stackoverflow に関する記事を書いたことがあります。いくつかの例とコードが提供されています:

[Windows 8 アプリでの向きの処理][1] Windows 8.1 ストア アプリでの向きの処理

さらに問題がある場合は、投稿してください。

ありがとう、アンブジ

于 2014-05-17T19:52:37.867 に答える