c# - 在使用 MVVM 更改 Silverlight 4 中的 View 之前等待 Storyboard动画完成

标签 c# silverlight mvvm

我在 Silverlight 4 中有一个登录页面。我使用 MVVM 来处理与该页面的所有交互。成功登录后,我有一个自定义事件在我的 View 模型中触发,然后是用于导航到主页的代码。我使用事件聚合、发布和订阅在 View 之间导航。

 AnimateLoginSuccess(this, null);
//code to navigate to the main page after successful login.

我在我的 View 中处理这个事件,像这样连接它,其中 LoginSuccessStoryboard 是我为一些基本动画创建的 Storyboard:

    //constructor of view
    public Login(LoginVM vm)
    {
        InitializeComponent();

        DataContext = vm;
        thisVM = vm;

        vm.AnimateLoginSuccess += new EventHandler(vm_AnimateLoginSuccess);

    }


//event handling method in view
    void vm_AnimateLoginSuccess(object sender, EventArgs e)
    {
        LoginSuccessStoryboard.Begin();
    }

现在,问题是,即使动画在成功登录后开始,下一行处理在成功登录时移动到不同 View 的操作使得移动到下一个 View 的速度如此之快,以至于它不会'等待动画完成。从而使动画几乎不存在。关于如何使这项工作有任何想法吗?

最佳答案

您可以使用 Completed Storyboard 的事件,在动画结束后导航到您的 View 。向您的 ViewModel 添加一个方法,该方法在动画之后执行以导航到默认的第一个 View 。

public Login(LoginVM vm) {
    InitializeComponent();

    LoginSuccessStoryboard.Completed += new EventHandler(NavigateToViewAfterAnimation);
    DataContext = vm;
    thisVM = vm;

    vm.AnimateLoginSuccess += new EventHandler(vm_AnimateLoginSuccess);

}

private void NavigateToViewAfterAnimation(object sender, EventArgs e) {
   thisVW.NavigateToFirstView();  // Navigates to the first view.
}

关于c# - 在使用 MVVM 更改 Silverlight 4 中的 View 之前等待 Storyboard动画完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8558410/

相关文章:

c# - Do-While循环的可接受用法?

c# - 如何在 Visual Studio 2019 和 .NET Core 3.0 中使用 ODBC 连接?

WPF 图像与 XAML

silverlight-4.0 - RIA 服务异步调用链上 silverlight

c# - 递归例程获取PropertyInfo

c# - 从 ConcurrentDictionary 中安全地删除列表映射

Silverlight 像素 API

c# - 如何在 Windows Phone 中正确将 xml 设置为 RichTextBox?

javascript - AngularJS 服务器和客户端表单验证

c# - 如何在ListView中将两列的值连接成一列