Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在WPF中进行登录验证后导航到UserControl?_C#_Wpf_Xaml_User Controls_Expression Blend - Fatal编程技术网

C# 在WPF中进行登录验证后导航到UserControl?

C# 在WPF中进行登录验证后导航到UserControl?,c#,wpf,xaml,user-controls,expression-blend,C#,Wpf,Xaml,User Controls,Expression Blend,我有一个登录用户控件和一个模块HomeScreen用户控件 我的登录用户控件有一个用户名和密码文本框和一个登录按钮。 当用户单击LoginButton时,其凭证将从数据库中验证;然后他必须被导航到ModuleHomeScreen用户控件 UserCredentials验证工作正常。 主窗口有一个导航框,我在这里切换用户控件 现在我的问题是: 在不填写用户凭据的情况下,当用户单击登录按钮时,仍会导航到Dashboard UserControl。 甚至导航代码也有问题 如何首先验证登录凭据,如果成功

我有一个登录用户控件和一个模块HomeScreen用户控件

我的登录用户控件有一个用户名和密码文本框和一个登录按钮。 当用户单击LoginButton时,其凭证将从数据库中验证;然后他必须被导航到ModuleHomeScreen用户控件

UserCredentials验证工作正常。 主窗口有一个导航框,我在这里切换用户控件

现在我的问题是: 在不填写用户凭据的情况下,当用户单击登录按钮时,仍会导航到Dashboard UserControl。 甚至导航代码也有问题

如何首先验证登录凭据,如果成功,则导航到其他UserControl

这是我的代码附件:

Login.xaml

    public void loginButton_Click(object sender, EventArgs e)
    {
        if (LoginUserName.Text != "" && LoginPassword.Password != "")
        {
            NpgsqlConnection con = new NpgsqlConnection("Server=localhost;Port=1234;UserID=postgres;Password=root;Database=postgres");
            con.Open();
            String username = LoginUserName.Text.Trim();
            String encPassword = TripleDESCrypto.Encrypt(LoginPassword.Password.Trim(),true);
            String query = "SELECT * FROM login where username= '" + username + "' and password = '" + encPassword + "';";
            NpgsqlCommand cmd = new NpgsqlCommand(query, con);
            NpgsqlDataReader dr = cmd.ExecuteReader();
            if (dr.Read())
            {
               // ServiceContainer.GetService<INavigationService>().Navigate("ModuleHomeScreen", null, this);
                LoginErrorMessage.Text = "Login Successfull";
                MainWindow appWindow = new MainWindow();
                ModuleHomeScreen appScreen = new ModuleHomeScreen();
                appWindow.MainWindowNavigationFrame.Navigate(appScreen,null);
            }
            else
            {
                LoginErrorMessage.Text = "Invalid Login Credentials.";
            }
        }
        else
        {
            LoginErrorMessage.Text = "Please enter all fields !";
        }
    }
试试这个:

    public void loginButton_Click(object sender, EventArgs e)
    {
        if (!string.IsNullOrEmpty(LoginUserName.Text))
        {
            ////Password could be empty for some user's
            if (LoginPassword.Password == null)
                LoginPassword.Password = string.Empty;

            NpgsqlConnection con = new NpgsqlConnection("Server=localhost;Port=1234;UserID=postgres;Password=root;Database=postgres");
            con.Open();
            String username = LoginUserName.Text.Trim();
            String encPassword = TripleDESCrypto.Encrypt(LoginPassword.Password.Trim(), true);
            String query = "SELECT count(*) FROM login where username= '" + username + "' and password = '" + encPassword + "';";
            NpgsqlCommand cmd = new NpgsqlCommand(query, con);
            int? dr = cmd.ExecuteScalar() as int?;
            if (dr.HasValue && dr.Value > 0)
            {
                // ServiceContainer.GetService<INavigationService>().Navigate("ModuleHomeScreen", null, this);
                LoginErrorMessage.Text = "Login Successfull";
                MainWindow appWindow = new MainWindow();
                ModuleHomeScreen appScreen = new ModuleHomeScreen();
                appWindow.MainWindowNavigationFrame.Navigate(appScreen, null);
            }
            else
            {
                LoginErrorMessage.Text = "Invalid Login Credentials.";
            }
        }
        else
        {
            LoginErrorMessage.Text = "Please enter user name !";
        }
    }

我试过上面的代码。单击登录按钮后,UserControl不会导航到其他视图模块HomeScreen UserControl。即使在输入正确的用户凭据之后,它也会显示无效的登录凭据。发送的密码使用三重密码加密方法进行加密。导航到不同的视图也不起作用。我上传的前一段代码似乎工作正常。正在验证用户凭据,我可以看到登录成功消息。但在此之后,我无法导航到ModuleHomeScreen视图。。