VisualStateManager.GoToState没有隐藏控件

时间:2014-09-12 13:59:27

标签: c# xaml winrt-xaml

我正在尝试使用VisualStateManager.GoToState方法隐藏网格的可见性。如果我在应用程序正常启动时调用该方法,则控件将按预期隐藏。当我Suspend and shutdown(terminate)然后恢复应用程序时会出现问题。在OnNavigationLoadState我打电话给VisualStateManager.GoToState,这应隐藏网格的可见性,但是在通话后控件仍然可见。

这是我试图隐藏的网格:

        <Grid x:Name="MyGrid" Grid.Column="0" Margin="0,0,0,0" 
            Width="350"
            Visibility="{Binding Path = ShowGrid, Mode=TwoWay, Converter={StaticResource BooleanToVisibilityConverter}}" >
            <customControls:MyCustomControl x:Name="EntityListViewControl" />

以下是负责隐藏此控件的可视状态:

            <VisualState x:Name="HideControl">
                <Storyboard>
                    <ObjectAnimationUsingKeyFrames Storyboard.TargetName="MyGrid" Storyboard.TargetProperty="Visibility">
                        <DiscreteObjectKeyFrame Value="Collapsed" KeyTime="0"/>
                    </ObjectAnimationUsingKeyFrames>
                </Storyboard>
            </VisualState>

以下是恢复应用程序时代码后面的调用:

protected override void OnNavigationLoadState(object sender, LoadStateEventArgs e)
{
    VisualStateManager.GoToState(this, "HideControl", true);
}

如果我将ShowGrid中的网格(OnNavigationLoadState)的依赖项属性设置为false,则网格会被隐藏,但我仍然想知道VisualStateManager为什么会这样做不行。同样,如果我在应用程序运行后调用它,VisualStateManager.GoToState的行为与预期一致,它在恢复事件期间无效。我还检查了OnNavigationLoadState内调用的布尔返回值,它返回true。

0 个答案:

没有答案