问题描述
您好,我有一个问题想要制作此动画,然后在完成动画后我想运行代码,但我无法弄清楚使用CaliburnMicro在MVVM中完成代码的方法。
请尽可能帮助我。
<Button x:Name="Forgot">
<Button.RenderTransform>
<TranslateTransform />
</Button.RenderTransform>
<Button.Triggers>
<EventTrigger RoutedEvent="Button.Click">
<BeginStoryboard>
<Storyboard>
<DoubleAnimation Storyboard.TargetName="UserName"
Storyboard.TargetProperty="RenderTransform.(TranslateTransform.X)"
From="0" To="-1000" Duration="0:0:1" />
<DoubleAnimation Storyboard.TargetName="Password"
Storyboard.TargetProperty="RenderTransform.(TranslateTransform.X)"
From="0" To="-1000" Duration="0:0:1" />
<DoubleAnimation Storyboard.TargetName="LogIn"
Storyboard.TargetProperty="RenderTransform.(TranslateTransform.X)"
From="0" To="-1000" Duration="0:0:1" />
<DoubleAnimation Storyboard.TargetName="Forgot"
Storyboard.TargetProperty="RenderTransform.(TranslateTransform.X)"
From="0" To="-1000" Duration="0:0:1" />
</Storyboard>
</BeginStoryboard>
</EventTrigger>
</Button.Triggers>
解决方法
一旦动画结束,您应该收听StoryBoard
引发的Completed
事件。
您可以为此使用EventTrigger
(尽管我不确定是否可以使用),也可以在XAML中绑定处理程序,然后执行所需的操作。
更新:
XAML:
<Storyboard Completed="storyboard_Completed">
...
C#:
void storyboard_Completed(object sender,EventArgs args)
{
// Do whatever you want here.
}
,
我是这样做的。
private void DoubleAnimation_Completed(object sender,EventArgs e)
{
LoginViewModel vm = this.DataContext as LoginViewModel;
vm.Forgot();
}
,现在可以使用了。谢谢