0

現在、Metroスタイルアプリケーション(.NET 4.5 RC [C#\ XAML]、VS2012 RC)で遊んでいますが、解決できない問題が1つあります。

ホスティングデバイスを回転させると(+ -45)、アプリがレイアウトを変更するようにしたいと思います。XAMLで2つのレイアウトを準備しました。1つは横向き用、もう1つは縦向き用で、ビジュアル状態用にいくつかのアニメーションを作成しました。

<VisualStateManager.VisualStateGroups>
    <VisualStateGroup x:Name="ApplicationViewStates">
        <VisualState x:Name="FullScreenLandscape"/>
        <VisualState x:Name="Filled"/>
        <VisualState x:Name="FullScreenPortrait">
            <Storyboard>
                <ObjectAnimationUsingKeyFrames Storyboard.TargetName="ControlContentLandscape" Storyboard.TargetProperty="Visibility">
                    <DiscreteObjectKeyFrame KeyTime="0" Value="Collapsed"/>
                </ObjectAnimationUsingKeyFrames>
                <ObjectAnimationUsingKeyFrames Storyboard.TargetName="ControlContentPortrait" Storyboard.TargetProperty="Visibility">
                    <DiscreteObjectKeyFrame KeyTime="0" Value="Visible"/>
                </ObjectAnimationUsingKeyFrames>
            </Storyboard>
        </VisualState>
        <VisualState x:Name="Snapped"/>
    </VisualStateGroup>
</VisualStateManager.VisualStateGroups>

しかし、私は次に何をすべきかわかりません。デバイスがポートレートモードになったときにこれらのアニメーションを実行するようにアプリを設定するにはどうすればよいですか?

4

1 に答える 1

1

Grid App テンプレートを分析しました。そして、そこにあるメイン ページが、Common フォルダーにあるLayoutAwarePageクラスから継承されていることに気付きました。LayoutAwarePageクラスは、 VisualStateManagerを使用して状態を切り替えるWindowSizeChangedイベントのハンドラーを提供します。これは、現在のプロジェクトに欠けている部分でした。解決策は次のとおりです。

  1. WindowsSizeChangedイベントを手動で処理し、 VisualStateManagerクラスとGoToState()メソッドを使用する
  2. 新しいプロジェクト (グリッド アプリ) を作成し、現在のプロジェクトに合わせます。
于 2012-07-26T05:22:16.853 に答える