ReactiveCommand никогда нельзя выполнить
Начал осваивать MVVM и фреймворк ReactiveUI, но остановился на создании команды. У меня во вьюмодели есть ReactiveCommand, которая по выполнению должна возвращать пользователя с введенными email и паролем. Но по какой-то причине CanExecute этой команды всегда false (проверял и с IObservable, и без - результат один, кнопка не нажимается).
public class AuthorizationViewModel : ViewModelBase
{
private string _email;
private string _password;
public AuthorizationViewModel()
{
var canExecute = this.WhenAnyValue(
x => x.Email, x => x.Password,
(email, password) =>
!string.IsNullOrWhiteSpace(email)
&& !string.IsNullOrWhiteSpace(password));
Authorize = ReactiveCommand.Create(() => AccountingService.SearchUser(Email, Password));
// тоже самое, что и
// Authorize = ReactiveCommand.Create(() => AccountingService.SearchUser(Email, Password), canExecute);
}
public string Email
{
get => _email;
set => this.RaiseAndSetIfChanged(ref _email, value);
}
public string Password
{
get => _password;
set => this.RaiseAndSetIfChanged(ref _password, value);
}
public ReactiveCommand<Unit, User?> Authorize { get; }
}
Ответы (1 шт):
Автор решения: Maxim
→ Ссылка
Проблема оказалась в отсутствии привязки вью к вьюмодели. Добавление дата контекста решило проблему:
<UserControl.DataContext>
<vm:AuthorizationViewModel/>
</UserControl.DataContext>