想要基于canexecute禁用该命令

时间:2017-11-07 09:33:41

标签: wpf mvvm telerik prism

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

实施如下,

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

        }
    }

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

1 个答案:

答案 0 :(得分:0)

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

new DelegateCommand((r) =>
{
    if (!CanSaveRemarks)
    {
        return;
    }

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