C# VisualStateManager.GoToState返回false,并且视觉状态未更改
我有这个XAML代码:C# VisualStateManager.GoToState返回false,并且视觉状态未更改,c#,windows-store-apps,winrt-xaml,windows-8.1,visualstatemanager,C#,Windows Store Apps,Winrt Xaml,Windows 8.1,Visualstatemanager,我有这个XAML代码: <Button x:Name="btnStartRecord" Visibility="Collapsed"> <Button.BorderBrush> <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0"> <GradientStop Color="Black"
<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>
但我看不到任何视觉状态的变化,我也不知道为什么:(
我做错什么了吗?你在打电话吗
VisualStateManager.GoToState((Button)this.btnStartRecord, RecordIconState.Name, false); // I get this always false
但只要看一眼,你就应该打电话
VisualStateManager.GoToState(this, RecordIconState.Name, false);
正如上面注释中提到的atomaras,将代码移动到usercontrol的根目录下
它成功了:)VSM是否连接到根元素?是的,它连接到xaml代码上方的网格。@atomaras非常感谢。尽管VAM附加到我的上下文的根,但它周围还有额外的网格。我试着把它连接到那个上面,结果成功了!伟大的非常感谢:)顺便说一句,我喜欢在转换到指定状态时使用指定状态的名称。你从哪儿弄来的?我也需要开始做。嗨,菲利普,我两种方法都试过了。如果你看,在“如果”部分,我试着发送“这个”,但没有成功。所以我试了一下按钮,但也没用。以我自己方便的方式命名。代码太大了,所以为了简化编写几天后的工作,我使用了它。很高兴你喜欢它。很多人不喜欢:)顺便说一句,如果你有其他办法解决这个问题,请告诉我。谢谢:)
VisualStateManager.GoToState(this, RecordIconState.Name, false);