C# 首先是WPF动画,然后在Screen ViewModel中运行代码
您好,我有一个问题,我想做这个动画,然后当动画完成后,我想运行代码,但我无法找到使用CaliburnMicro在MVVM中完成它的方法 如果可能的话,请帮助我C# 首先是WPF动画,然后在Screen ViewModel中运行代码,c#,wpf,animation,mvvm,caliburn.micro,C#,Wpf,Animation,Mvvm,Caliburn.micro,您好,我有一个问题,我想做这个动画,然后当动画完成后,我想运行代码,但我无法找到使用CaliburnMicro在MVVM中完成它的方法 如果可能的话,请帮助我 <Button x:Name="Forgot"> <Button.RenderTransform> <TranslateTransform /> </Button.RenderTransform>
<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>
动画完成后,您应该收听情节提要引发的事件
您可以为此使用EventTrigger
(尽管我不确定这是否有效),也可以在XAML中绑定一个处理程序,然后在这一点上做任何您喜欢的事情
更新:
XAML:
我是这样做的
private void DoubleAnimation_Completed(object sender, EventArgs e)
{
LoginViewModel vm = this.DataContext as LoginViewModel;
vm.Forgot();
}
现在它开始工作了。谢谢你这就是问题所在,我不知道怎么做。如果我执行了
Completed=“forget
,那么我会得到错误。是否可以显示该示例?我可以这样做:public分部类LoginView:UserControl{private IEventAggregator(事件;public LoginView(IEventAggregator事件){InitializeComponent();}私有void DoubleAnimation_已完成(对象发送方,EventArgs e){{u events.publishOnIthread(new ResetEvent());}
但是我在BootstraperOr中遇到了错误,换句话说,我不知道如何发布事件,以便ViewModel可以订阅它。或者这个故事板是否应该在ViewModel中完成重要的是,您帮助我完成了我想要的。非常感谢。
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();
}