我有一个'你好世界'形式(Xamarin形式)与一些领域和一个提交按钮。有一个可观察的(CanSave)来控制SaveChangesCommand何时可以执行。如果在CanSave为false时按下保存按钮,我想要向用户显示一条消息。执行从另一个命令的命令
与下面的代码,如果我
- 输入不正确的数据
- 单击保存(错误消息显示)
- 然后更正数据。
CanSave成为true并执行SaveChangesCommand - 在再次按下按钮之前。就好像之前阻止的按钮按下了队列,直到canExecute成为true。
我错过了什么?
感谢:-)
public PersonalProfileModel()
{
this.SaveChangesCommand = ReactiveCommand.CreateAsyncTask(this.CanSave(), message => this.doAllThings(message as string));
this.ButtonClickedCommand = ReactiveCommand.Create(Observable.Return(true));
this.ButtonClickedCommand.InvokeCommand(this.SaveChangesCommand);
// ButtonClickedCommand.Subscribe(x => this.SaveChangesCommand.Execute("hello")); // tried this too
}
public ReactiveCommand<object> ButtonClickedCommand { get; set; }
public ReactiveCommand<string> SaveChangesCommand;
public IObservable<bool> CanSave()
{
var fieldsValid = this.WhenAnyValue(
x => x.Name,
x => x.Country,
(f1, f2) =>
f1 == "a"
&& f2 == "b");
return fieldsValid;
}
public Task<string> doAllThings(string message)
{
var result = Task.Run(() =>{return "hello " + message;});
return result;
}
我已经玩过更多这个问题,并将问题修改为我认为是问题的更简洁的本质。 http://stackoverflow.com/q/25636199/494635 – 2014-09-03 04:24:36