【问题标题】:Want to disable the command based on canexecute想禁用基于canexecute的命令
【发布时间】:2017-11-07 09:33:41
【问题描述】:

我有一个来自 Telerik 的简单 DelegateCommand。我有一个案例, 我有一个带有文本框和按钮的屏幕。每当我点击保存按钮时,该按钮应该被禁用,并且在操作完成之前不应该接受任何点击。

实现如下,

 public DelegateCommand SaveRemarksCommand
    {
        get
        {
            return _saveRemarksCommand = new DelegateCommand((r) =>
                {
                    CanSaveRemarks = false;
                    SaveRemarksCommand.InvalidateCanExecute();
                    SaveRemarks(null);
                },
                (result) =>
                {
                    return CanSaveRemarks;
                });

        }
    }

在这里,我将 CanSaveRemarks 操作为 false,直到 SaveRemarks 执行。 现在的问题是,如果我在按钮上快速单击多次,则该按钮接受多次单击以保存重复项。

【问题讨论】:

    标签: wpf mvvm telerik prism


    【解决方案1】:

    您还可以在命令处理程序中检查CanSaveRemarks 属性。 您已经可以使用此属性,因此您无需介绍其他内容。

    new DelegateCommand((r) =>
    {
        if (!CanSaveRemarks)
        {
            return;
        }
    
        CanSaveRemarks = false;
        try
        {
            SaveRemarksCommand.InvalidateCanExecute();
            SaveRemarks(null);
        }
        finally
        {
            CanSaveRemarks = true;
        }
    },
    (result) =>
    {
        return CanSaveRemarks;
    });
    

    【讨论】:

      猜你喜欢
      • 2020-04-11
      • 1970-01-01
      • 1970-01-01
      • 2013-02-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多