也许我错过了一些东西,但是我无法让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的'分叉'。我认为这更是核心问题。
答案 0 :(得分:3)
这是按设计的。 ReactiveUI不会阻止您明确调用Execute
/ ExecuteAsync
,并相信您知道自己在做什么™