我有一个“世界你好”的形式(Xamarin的形式),其中一些字段和一个提交按钮。 这里有一个观察,(CanSave),其控制时,SaveChangesCommand可以执行。 如果在CanSave是假按下保存按钮,我想显示一条消息给用户。
用下面的代码,如果我
- 输入不正确的数据
- 点击保存(错误消息显示)
- 然后更正数据。
CanSave变为真,执行SaveChangesCommand - 按钮又打之前。 就好像之前被锁住按钮按下排队,直到canExecute成真。
我在想什么?
谢谢 :-)
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;
}