使命令1次可执行

时间:2018-06-22 18:30:24

标签: mvvm prism delegatecommand canexecute

DelegateCommand的{​​{1}}框架中创建一个Prism的最佳实践是一次只能执行一次,以防止按钮被点击发送垃圾邮件,这可能导致应用程序崩溃。 非常感谢!

1 个答案:

答案 0 :(得分:0)

这是我通常的工作:

  • 您应该具有要删除的内容的属性。使用CanExecute
  • 在您的委托命令中,监视属性是否为空?使用
  • 在DelegateCommand中将ObserveProperty设置为您的身份
  • 正在删除。在DeleteCommandExecute中,将属性设置为在删除后为null。

这是一个例子

    private Class object;
    public Class Object
    {
        get { return object; }
        set { SetProperty(ref object, value); }
    }
    private DelegateCommand _delete;
    public DelegateCommand Delete =>
        _delete ?? (_delete = new DelegateCommand(ExecuteDelete, CanExecuteDelete)).ObservesProperty(()=> Object);

    void ExecuteDelete()
    {
        MyServices.Delete(Object);
        Object = null;
    }

    bool CanExecuteDelete()
    {
        return Object != null;
    }