Страницы

Поиск по вопросам

вторник, 25 февраля 2020 г.

Окно ввода логина/пароля в WPF

#c_sharp #wpf


В моей программе на 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";
        }
    }



    


Ответы

Ответ 1



Исходя из сообщения об ошибке, нужно запускать LogIn после загрузки окна: public MainWindow() // Конструктор { InitializeComponent(); Loaded += (o, args) => LogIn(); }

Комментариев нет:

Отправить комментарий