我正在尝试使用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。