我有一個'你好世界'形式(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