使命令 1 次可执行

Making Command 1-time-executable

最好的做法是在 MVVM 中从 Prism 框架制作一个 DelegateCommand 只能执行一次,以防止点击垃圾邮件按钮,这可能会导致应用程序崩溃。 非常感谢!

这是我通常做的事情:

  • 对于要删除的内容,您应该有一个 属性。使用 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;
    }