VisualStateManager.GoToState 返回 false 且 Visual State 未更改 [英] VisualStateManager.GoToState returns false and Visual State is not changed
本文介绍了VisualStateManager.GoToState 返回 false 且 Visual State 未更改的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有这个 XAML 代码:
I have this XAML code:
<Button x:Name="btnStartRecord" Visibility="Collapsed">
<Button.BorderBrush>
<LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="Black" Offset="0"/>
<GradientStop Color="#FFF3883E" Offset="1"/>
</LinearGradientBrush>
</Button.BorderBrush>
</Button>
<Button x:Name="btnStopRecord" Visibility="Collapsed">
<Button.BorderBrush>
<LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="Black" Offset="0"/>
<GradientStop Color="#FFF3883E" Offset="1"/>
</LinearGradientBrush>
</Button.BorderBrush>
</Button>
<VisualStateManager.VisualStateGroups>
<VisualStateGroup x:Name="MainStates">
<VisualState x:Name="RecordIconState">
<Storyboard>
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="btnStartRecord" Storyboard.TargetProperty="(UIElement.Visibility)">
<DiscreteObjectKeyFrame KeyTime="0:0:0" Value="Visible"/>
<!--<DiscreteObjectKeyFrame KeyTime="0" Value="Visible"/>-->
</ObjectAnimationUsingKeyFrames>
<!--<ObjectAnimationUsingKeyFrames Storyboard.TargetName="btnStopRecord" Storyboard.TargetProperty="Visibility">
<DiscreteObjectKeyFrame KeyTime="0" Value="Collapsed"/>
</ObjectAnimationUsingKeyFrames>-->
</Storyboard>
</VisualState>
<VisualState x:Name="StopRecordIconState">
<Storyboard>
<!--<ObjectAnimationUsingKeyFrames Storyboard.TargetName="btnStartRecord" Storyboard.TargetProperty="Visibility">
<DiscreteObjectKeyFrame KeyTime="0" Value="Collapsed"/>
</ObjectAnimationUsingKeyFrames>-->
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="btnStopRecord" Storyboard.TargetProperty="Visibility">
<DiscreteObjectKeyFrame KeyTime="0" Value="Visible"/>
</ObjectAnimationUsingKeyFrames>
</Storyboard>
</VisualState>
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>
在代码隐藏中,我在 OnLoad/Constructor 中调用以下函数:
And in Code Behind, I call following function in OnLoad/Constructor :
private void SwitchRecordButtonContent()
{
{
if (m_bRecording)
{
//btnStartStopRecord.Content = "StopRecord";
VisualStateManager.GoToState(this, StopRecordIconState.Name, false);
VisualState currentState = MainStates.CurrentState;
Visibility temp = btnStartRecord.Visibility;
}
else
{
//btnStartStopRecord.Content = "StartRecord";
bool op = VisualStateManager.GoToState((Button)this.btnStartRecord, RecordIconState.Name, false); // I get this always false
VisualState currentState = MainStates.CurrentState;
Visibility temp = btnStartRecord.Visibility;
}
}
}
但我看不到视觉状态的变化,我不知道为什么:(
But I see no Visual state change and I cannot figure out why :(
我做错了什么吗?
推荐答案
正如上面评论中提到的atomaras,将代码移动到用户控件的最根目录它奏效了:)
as atomaras mentioned in above comment, moved the code to the very root of the usercontrol and it worked :)
这篇关于VisualStateManager.GoToState 返回 false 且 Visual State 未更改的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文