我有一个带有按钮的登录表单(btnLogin)。当用户点击btnLogin,以下Storyboard
被触发禁用btnLogin,txtUsername,pbPassword ...反向触发动画如果方法失败使用Xaml,而不是代码
<EventTrigger RoutedEvent="Button.Click">
<EventTrigger.Actions>
<BeginStoryboard>
<Storyboard>
<BooleanAnimationUsingKeyFrames Storyboard.TargetProperty="IsEnabled" FillBehavior="HoldEnd">
<DiscreteBooleanKeyFrame KeyTime="00:00:00" Value="False" />
</BooleanAnimationUsingKeyFrames>
<BooleanAnimationUsingKeyFrames Storyboard.TargetName="txtUsername" Storyboard.TargetProperty="IsEnabled" FillBehavior="HoldEnd">
<DiscreteBooleanKeyFrame KeyTime="00:00:00" Value="False" />
</BooleanAnimationUsingKeyFrames>
<BooleanAnimationUsingKeyFrames Storyboard.TargetName="pbPassword" Storyboard.TargetProperty="IsEnabled" FillBehavior="HoldEnd">
<DiscreteBooleanKeyFrame KeyTime="00:00:00" Value="False" />
</BooleanAnimationUsingKeyFrames>
</Storyboard>
</BeginStoryboard>
</EventTrigger.Actions>
</EventTrigger>
...因为这Storyboard
运行时,Button.Click
事件也连接到btnLogin_Click
方法验证用户凭证。很公平!
目前,如果登录尝试失败,我必须使用以下(脏?!)代码btnLogin_Click
重新启用btnLogin,txtUsername,pbPassword控制等等细节可以重新进入......
btnLogin.Triggers.Clear();
btnLogin.BeginAnimation(UIElement.IsEnabledProperty, null);
txtUsername.BeginAnimation(UIElement.IsEnabledProperty, null);
pbPassword.BeginAnimation(UIElement.IsEnabledProperty, null);
我可以使用Xaml来处理这个重新启用吗?我确信我可以,我只是不知道该怎么做?!
感谢您的帮助:O)
UPDATE
我使用EnterActions
和ExitActions
试图通过bars222的建议,但这种做法有没有办法确定btnLogin_Click
事件导致登录成功或失败。
此外,我认为最好使用数据绑定为你的情况,但它需要一些代码背后。 – bars222
感谢您的回复。不幸的是,该方法根本不禁用按钮。我认为它可能会禁用,然后立即启用它。你能给我提供关于你提到的数据绑定解决方案的更多信息吗? –
对于第一个答案,我建议授权表单将在成功验证过程后被禁用。用数据绑定示例更新答案。 – bars222