ReactiveCommand不尊重canExecute

时间:2014-09-03 04:23:31

标签: reactiveui

也许我错过了一些东西,但是我无法让ReactiveCommand阻止基于canExecute observable的执行。

以下是我能想到的最简单的例子。我希望命令永远不会发射,但它确实如此。

我错过了什么?

void Main()
{
    var canExecute = Observable.Return(false);
    var myCommand = ReactiveCommand.CreateAsyncTask(canExecute, m => functions.doAllThings(m));

    myCommand.Subscribe(x=>"executing".Dump());

    myCommand.Execute("Tom"); // This fires the command. I would have expected it to block
}

static class functions
{
    public static Task doAllThings(object message)
    {
        var result = Task.Run(() =>{
                    "running task...".Dump();
                    return "hello " + (string)message;});

        return result;
    }
}

注意 - 这个问题是来自Executing a command from another command的'分叉'。我认为这更是核心问题。

1 个答案:

答案 0 :(得分:3)

这是按设计的。 ReactiveUI不会阻止您明确调用Execute / ExecuteAsync,并相信您知道自己在做什么™