在Metro Apps中屏幕变黑

时间:2012-10-02 17:05:37

标签: c# xaml microsoft-metro

当我从横向切换到填充视图并首次从一个页面导航到另一个页面时,我的应用程序变黑。后来它工作正常,但第一次变黑。 当我从Fill切换到Landscape View并且第一次从一个页面导航到另一个页面时,它甚至会变黑。后来它工作正常,但第一次变黑。 我的代码是用C#和XAML编写的。 当我从Landscape切换到Fill时,我没有改变任何东西,反之亦然。 我只有在视图从Snap变为Fill / Landscape时才更改它,反之亦然..

1 个答案:

答案 0 :(得分: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更清晰,更易于阅读。