public CredentialsLoginVM(INeedsLoginCredentials downloader) { _downloader = downloader; _loginEnabled = this.WhenAny(x => x.Username) .Select(IsValidAddress) .CombineLatest( this.WhenAny(x => x.LoggingIn), (valid, loggingIn) => { return(valid && !loggingIn); }) .ToGuiProperty(this, nameof(LoginEnabled)); _mfaVisible = this.WhenAny(x => x.ReturnMessage) .Select(x => x.ReturnCode == LoginReturnCode.NeedsMFA) .ToGuiProperty(this, nameof(MFAVisible)); }
public CredentialsLoginView(INeedsLoginCredentials downloader) { Downloader = downloader; if (ViewModel == null) { ViewModel = new CredentialsLoginVM(downloader); } InitializeComponent(); this.WhenActivated(disposable => { this.Bind(ViewModel, x => x.Username, x => x.Username.Text) .DisposeWith(disposable); this.Bind(ViewModel, x => x.LoginEnabled, x => x.LoginButton.IsEnabled) .DisposeWith(disposable); this.OneWayBind(ViewModel, x => x.ReturnMessage.Message, x => x.Message.Text) .DisposeWith(disposable); }); }