일부 필드와 제출 단추가있는 '안녕하세요 세계'양식 (자 마린 양식)이 있습니다. SaveChangesCommand가 실행될 수있을 때를 제어하는 관찰 가능 (CanSave)이 있습니다. CanSave가 false 일 때 저장 버튼을 누르면 사용자에게 메시지를 표시하려고합니다. 아래의 코드와다른 명령에서 명령 실행
, 내가
- 는 다음 데이터를 수정 저장
- 클릭 (오류 메시지가 표시됩니다) 잘못된 데이터
- 를 입력합니다.
버튼을 다시 누르기 전에 CanSave가 실행되고 SaveChangesCommand가 실행됩니다. 마치 이전에 차단 된 버튼 누름이 canExecute가 true가 될 때까지 대기 중이었던 것과 같습니다.
무엇이 누락 되었습니까? 는 "은 buttonClicked 명령을 사용하는 - 이제 우리는 명시 적으로 SaveChangesCommand의 측면에서은 buttonClicked의 명령 사이의 관계를 설명하고
this.SaveChangesCommand = ReactiveCommand.CreateAsyncTask(
this.CanSave(),
message => this.doAllThings(message as string));
this.ButtonClickedCommand = ReactiveCommand.CreateAsyncObservable(
SaveChangesCommand.CanExecuteObservable.StartWith(true),
x => SaveChangesCommand.ExecuteAsync(x));
이 : 이것에 대해 어떻게
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 –