1

ランドスケープ ビューからフィル ビューに切り替えて、あるページから別のページに初めて移動すると、アプリケーションが真っ暗になります。その後は正常に動作しますが、最初は黒くなります。FillからLandscape Viewに切り替えて、あるページから別のページに初めて移動すると、それも黒くなります。その後は正常に動作しますが、最初は黒くなります。私のコードは C# と XAML で書かれています。ランドスケープからフィルに、またはその逆に切り替えても、何も変更していません。ビューが Snap から Fill/Landscape に、またはその逆に変更された場合にのみ変更します。

4

1 に答える 1

1

既存のコンテンツのサイズを変更する代わりに、ユーザーがスナップ モードに移行するまで非表示になっている別のコンテンツ セットを用意する方が簡単な場合があります。

VisualStateGroups を使用して、特定の全画面表示/スナップ ビューの適切なコンテンツ セットを表示/非表示にします。

したがって、既存のフィールドのサイズを変更する代わりに:

<Page>
    <Grid>
        <Grid x:Name="FullScreenLayout">...
        </Grid>
        <Grid x:Name="SnappedScreenLayout">...
        </Grid>
        <VisualStateManager.VisualStateGroups>

            <!-- Visual states reflect the application's view state -->
            <VisualStateGroup x:Name="ApplicationViewStates">  
                <VisualState x:Name="Snapped">
                    <Storyboard>
                        <ObjectAnimationUsingKeyFrames Storyboard.TargetName="FullScreenLayout" Storyboard.TargetProperty="Visibility">
                            <DiscreteObjectKeyFrame KeyTime="0" Value="Collapsed"/>
                        </ObjectAnimationUsingKeyFrames>
                        <ObjectAnimationUsingKeyFrames Storyboard.TargetName="SnappedScreenLayout" Storyboard.TargetProperty="Visibility">
                            <DiscreteObjectKeyFrame KeyTime="0" Value="Visible"/>
                        </ObjectAnimationUsingKeyFrames>     
                    </Storyboard>
                </VisualState>
            </VisualStateGroup>
        </VisualStateManager.VisualStateGroups>
    </Grid>
</Page>

ここでは、スナップ モードのときにフルスクリーン レイアウトを非表示にし、スナップ モード レイアウトを表示しています。より多くの Xaml がありますが、含まれており、ビュー固有のレイアウトを提供できるため、Xaml がよりクリーンで読みやすくなります。

于 2012-10-04T20:57:10.037 に答える