c# - 在wpf和mvvm中使用后台计算实现用户界面命令

标签 c# wpf mvvm prism

我在实现用户界面命令时遇到一些困难。
我使用wpf,prism和mvvm。我的应用程序有两个区域-主菜单和菜单。
当应用程序加载到菜单区域(NavBarControl,Devexpress)中时,正在注册菜单项(NavBarGroup)。每个NavBarGroup都有一些NavBarItem。当NavBarItem选择这势必执行命令。一些命令允许创建实体。但是对于该应用程序而言,它必须从服务器加载一些数据,因此此时用户界面应该会做出响应。我试图以另一种方式达到该用途:

this.createAccount.Command = (ICommand)new DelegateCommand(this.ExecuteCreateAccount);

private void ExecuteCreateAccount()
    {
        AppEvent.OnShowNotificationEvent(UTNotificationType.ChangeMainLoaderStatus, "show", null);
        if (this.isCreateAccountProcessing)
        {
            return;
        }

        this.isCreateAccountProcessing = true;
        Task.Factory.StartNew(() => this.AccountListViewModel.LoadUsersCollection()).GetAwaiter().OnCompleted(this.ShowAccountEditor);
    }

    private void ShowAccountEditor()
    {
        AppEvent.OnShowNotificationEvent(UTNotificationType.ChangeMainLoaderStatus, null, null);
        this.isCreateAccountProcessing = false;

        if (this.createAccount.IsSelected)
        {
            this.AccountListViewModel.CreateNewItem();
        }
    }

但是,也许有更好的方法来实现这一目标?
进行后台计算时,应用程序显示加载程序(AppEvent.OnShowNotificationEvent)。如果用户选择另一个菜单项,则该命令被视为已取消,并且不应显示帐户编辑器。

最佳答案

由于您使用的是DevExpress框架,因此建议您使用AsyncCommand。根据文档,它是针对上述场景设计的。

关于c# - 在wpf和mvvm中使用后台计算实现用户界面命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38605645/

相关文章:

c# - WPF 多重绑定(bind)到 View 模型

c# - View 模型之间的绑定(bind)属性

mvvm - UWP TextBox 文本绑定(bind)不起作用

c# - 从 C# 调用 Exchange 命令行管理程序

c# - 无论如何通过 XAML 事件监听器传递 WPF 控件以在后面的代码中使用?

c# - 保存和加载数据 "the MVVM"的方式?

c# - 静态 ViewModel 与实例化 ViewModel

c# - 在此示例 MVVM 应用程序中使用模型是否有意义?

c# - .net 中类和结构之间的实际区别(不是概念上的)?

c# - 如何处理 EntityDataSource 中的自连接?