В моей программе на WPF я использую библиотеку MahAps.Metro и при запуске программы я хочу отображать диалоговое окно, где можно будет ввести логин/пароль.
Но выдает ошибку System.InvalidOperationException. Не пойму, в чем дело.
Может потому что метод, отображающий окно, в конструкторе вызываю?
public MainWindow() // Конструктор
{
InitializeComponent();
LogIn();
}
private async void LogIn()
{
LoginDialogData result = await this.ShowLoginAsync("Authentication", "Enter your credentials",
new LoginDialogSettings { ColorScheme = this.MetroDialogOptions.ColorScheme, InitialUsername = "MahApps" });
}
У меня есть код, обрабатывающий нажатие кнопки. При нажатии возникает диалоговое окно, где можно вести логин/пароль. Внутри обработчика нажатия на копку все работает, но если этот код скопировать в метод выше, то опять будет та же ошибка...
private async void buttonLogOut_Click(object sender, RoutedEventArgs e)
{
var title = "Enter your credentials";
var settings = new LoginDialogSettings
{
ColorScheme = MetroDialogOptions.ColorScheme
};
while (true)
{
var result = await this.ShowLoginAsync("Authentication", title, settings);
if (result.Username == "dima" && result.Password == "123456")
break;
title = "Wrong data, try again";
}
}
Ответ
Исходя из сообщения об ошибке, нужно запускать LogIn после загрузки окна:
public MainWindow() // Конструктор
{
InitializeComponent();
Loaded += (o, args) => LogIn();
}
Комментариев нет:
Отправить комментарий