Я пытаюсь обернуть свою голову вокруг реактивного UI, который недавно обновился до 7.0 из 6.5.2 и, похоже, включает некоторые нарушения в отношении ReactiveCommand.ReactiveUI 7.0, ReactiveCommand, Подписаться никогда не срабатывает?
EG это используется для работы:
в ViewModel:
public ReactiveCommand<Unit> DoLogin;
...
DoLogin = ReactiveCommand.CreateAsyncTask(
async x => {
IsBusy = true;
await Task.Delay(2500);
IsBusy = false;
return Unit.Default;
});
в Вид:
//bind the command
Observable.FromEventPattern(x => loginButton.Clicked += x, x => loginButton.Clicked -= x)
.Subscribe(args => ViewModel.DoLogin.Execute(null));
//do something after the dologin is complete
this.WhenAnyObservable(x => x.ViewModel.DoLogin)
.ObserveOn(RxApp.MainThreadScheduler)
.Subscribe(x => {
DisplayAlert("login complete", "welcome", "OK");
}
);
но теперь в reactiveui 7.0, он отличается, я должен был сделать несколько изменения, и я не могу заставить его работать должным образом:
в ViewModel:
public ReactiveCommand<Unit, Unit> DoLogin;
...
DoLogin = ReactiveCommand.CreateFromTask(
async x => {
IsBusy = true;
await Task.Delay(2500);
IsBusy = false;
return Unit.Default;
});
в Вид:
//bind the command
Observable.FromEventPattern(x => loginButton.Clicked += x, x => loginButton.Clicked -= x)
.Subscribe(args => ViewModel.DoLogin.Execute());
//do something after the dologin is complete
this.WhenAnyObservable(x => x.ViewModel.DoLogin)
.ObserveOn(RxApp.MainThreadScheduler)
.Subscribe(x => {
DisplayAlert("login complete", "welcome", "OK");
}
);
Код команды по-прежнему запускается на выполнение, но WhenANyObservable Subscribe часть никогда не срабатывает. Он никогда не показывает мой DisplayAlert.
Я использую Xamarin Forms, если это имеет значение, но даже в Windows Forms я получаю такое же поведение.
да, здорово. мне удалось пробиться через это. теперь стало намного чище. его трудно, пытаясь узнать то, что я не понимаю, и в то же время синтаксис меняется! – 101chris