В WPF я создал отдельное окно, чтобы содержать подсказку с паролем, которая будет отображаться при запуске. MainWindow необходимо отключить, работая только при вводе правильного пароля. Я сделал следующий для моего MainWindow.xaml.cs:Запрос пароля в новом окне
public MainWindow()
{
InitializeComponent();
this.view_model = new MainViewModel();
this.DataContext = view_model;
LoginWindow login_window = new LoginWindow();
login_window.ShowDialog();
}
В пользователе появляется, пароль вводится и логика Логина проводится в кнопках мыши:
private void button_Login_Click(object sender, RoutedEventArgs e)
{
Tuple<bool, string> result = view_model.Login(this.textbox_password.Password);
if (result.Item1 == true)
{
// Login successful
}
else
{
MessageBox.Show(result.Item2, "Failed", MessageBoxButton.OK, MessageBoxImage.Error);
}
}
Мой вопрос сейчас находится , как я могу уведомить MainWindowViewModel, что он может продолжить работу с остальной частью приложения? Есть лучший способ сделать это?
Спасибо за ответ, у меня вопрос о реализации. Таким образом, при нажатии кнопки входа в систему вы вызываете метод входа в систему, в котором ViewModel? ViewModel для окна входа в систему или главного окна? И метод LoginCheck() есть где? Раньше я не встречал какой-либо код в методе LoginCheck(). – user3761858
Не имеет значения, это может быть любой ViewModel или класс. LoginCheck фактически вызывает внешний API, поэтому обратный вызов AttemptLogin и LoginCheck является отдельным. Кроме того, вам нужно будет обработать событие закрытия LoginForm, чтобы проверить, что успешный логин/сеанс был установлен и закрыть MainWindow, если нет. – pathDongle