public CredentialsViewModel(string username) { LoginCommand = new RelayCommand(Accept, () => IsValid); CancelCommand = new RelayCommand(Cancel); ForgotPasswordCommand = new RelayCommand(() => BrowserHelper.OpenDefaultBrowser(BitbucketResources.PasswordResetUrl)); SignUpCommand = new RelayCommand(() => BrowserHelper.OpenDefaultBrowser(BitbucketResources.SignUpLinkUrl)); LoginValidator = PropertyValidator.For(this, x => x.Login).Required(BitbucketResources.LoginRequired); PasswordValidator = PropertyValidator.For(this, x => x.Password).Required(BitbucketResources.PasswordRequired); _modelValidator.Add(LoginValidator); _modelValidator.Add(PasswordValidator); _modelValidator.IsValidChanged += (s, e) => LoginCommand.RaiseCanExecuteChanged(); // Set last to allow validator to run if (!string.IsNullOrWhiteSpace(username)) { Login = username; } }