我正在将一些代码从Silverlight转换到WPF,但我的VisualStates没有正常工作。
我使用VisualStateManager来控制一些文本字段的可见性。我没有使用任何过渡来动画改变,我只想在一个状态下将字段折叠起来,然后在另一个状态下显示出来。
Silverlight中的Xaml:
<VisualStateManager.VisualStateGroups>
<VisualStateGroup x:Name="LostPasswordStates">
<VisualState x:Name="LostPassword_Start">
<Storyboard>
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="lbl_UserName" Storyboard.TargetProperty="(UIElement.Visibility)">
<DiscreteObjectKeyFrame KeyTime="00:00:00" Value="Visible" />
</ObjectAnimationUsingKeyFrames>
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="txt_UserName" Storyboard.TargetProperty="(UIElement.Visibility)">
<DiscreteObjectKeyFrame KeyTime="00:00:00" Value="Visible" />
</ObjectAnimationUsingKeyFrames>
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="txt_UserName" Storyboard.TargetProperty="(TextBox.IsReadOnly)">
<DiscreteObjectKeyFrame KeyTime="00:00:00" Value="False" />
</ObjectAnimationUsingKeyFrames>
</Storyboard>
</VisualState>
<VisualState x:Name="LostPassword_Success">
<Storyboard>
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="lbl_UserName" Storyboard.TargetProperty="(UIElement.Visibility)">
<DiscreteObjectKeyFrame KeyTime="00:00:00" Value="Collapsed" />
</ObjectAnimationUsingKeyFrames>
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="txt_UserName" Storyboard.TargetProperty="(UIElement.Visibility)">
<DiscreteObjectKeyFrame KeyTime="00:00:00" Value="Collapsed" />
</ObjectAnimationUsingKeyFrames>
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="btn_Reset" Storyboard.TargetProperty="(UIElement.Visibility)">
<DiscreteObjectKeyFrame KeyTime="00:00:00" Value="Collapsed" />
</ObjectAnimationUsingKeyFrames>
</Storyboard>
</VisualState>
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>
我遇到了以下异常:
未处理的类型为 'System.Windows.Media.Animation.AnimationException' 的异常发生在 PresentationCore.dll 中。
更多信息:无法使用 'System.Windows.Media.Animation.ObjectAnimationUsingKeyFrames' 在 'System.Windows.Controls.TextBox' 上动画化 'Visibility' 属性。请参见内部异常以了解详情。
所以我的问题是:
如果我不能使用 System.Windows.Media.Animation.ObjectAnimationUsingKeyFrames,在这种情况下应该使用什么?
Border
上的UIElement.Visibility
属性。 - Richard Deeming{x:Static Visibility.Visible}
作为Value
,而不仅仅是Visible
。 - Richard Deeming