当前情况下如何使用子窗口作为登录页面

本文关键字:登录 窗口 前情 情况下 何使用 | 更新日期: 2023-09-27 18:12:41

我是silverlight初学者,在启动时必须弹出登录页子窗口的情况下(启动程序时必须出现的第一件事必须是登录子窗口弹出)。当密码输入正确,然后显示UI元素。(之前)

我试着这样做,通过加载在MainPage. example .cs子窗口,并设置其可见性为崩溃的想法是,当用户输入正确的密码和用户名,然后UI元素的可见性(MainPage initializecomponents();)必须可见。

我试过这样做:

public partial class MainPage : UserControl
    {
        public MainPage()
        {
            InitializeComponent();
            Loaded += MainPage_Loaded;
        }
       private void MainPage_Loaded(object sender, RoutedEventArgs e)
        {
            Visibility = Visibility.Collapsed;
            loginChildWindow log = new loginChildWindow();    
            log.Show();
        }
    } 

和弹出的childwindow类是:

public partial class loginChildWindow : ChildWindow
    {
        public loginChildWindow()
        {            
            InitializeComponent();    
        }
        private void Button_Click(object sender, RoutedEventArgs e)
        {
            if (txtUsrname.Text == "Username" && txtPassword.Password == "Password")
            {
                MainPage obj = new MainPage();
                obj.Visibility = Visibility.Visible;
                obj.InitializeComponent();
               this.DialogResult = true;            
            }
            else
            {
                MessageBox.Show("Incorrect username and/orpassword", "Error", MessageBoxButton.OK);
            }
        }
        private void CancelButton_Click(object sender, RoutedEventArgs e)
        {
            this.DialogResult = false;
        }   
    }

这里的问题是,即使在输入正确的信息时,我将可见性设置为可见,但它仍然不显示任何东西。看到这个:

    if (txtUsrname.Text == "Username" && txtPassword.Password == "Password")
                    {
                        MainPage obj = new MainPage();
                        obj.Visibility = Visibility.Visible;
                        obj.InitializeComponent();
//I also tried commenting the above 3 lines and simply doing this.Visibility = Visibility.Visible; but still do not work
                       this.DialogResult = true;            
                    }

我认为我需要在MainPage.xaml.cs类(不在loginChildWindow.cs类)中设置可见性,但如何知道在loginChildWindow.cs中输入的登录密码和用户名是否正确,以便在MainPage.xaml.cs中设置数据输入正确时可见性。

如果有人知道解决这个问题的其他方法,请帮助我。

当前情况下如何使用子窗口作为登录页面

最后我这样解决了这个问题(供将来的读者参考):

public partial class MainPage : UserControl
    {
        public MainPage()
        {
            InitializeComponent();
            Loaded += MainPage_Loaded;
        }
       private void MainPage_Loaded(object sender, RoutedEventArgs e)
        {
            Visibility = Visibility.Collapsed;
            loginChildWindow log = new loginChildWindow(this);
            log.Show();
        }
       public void loginWnd_Closed(object sender, EventArgs e)
       {
           this.Visibility = Visibility.Visible;
       }
    } 

:

 public partial class loginChildWindow : ChildWindow
    {
        private readonly MainPage _mainPage;
        public loginChildWindow(MainPage mainPage)
        {
            InitializeComponent();
            _mainPage = mainPage;
        }

        private void Button_Click(object sender, RoutedEventArgs e)
        {
            if (txtUsrname.Text == "Username" && txtPassword.Password == "Password")
            {
                _mainPage.Visibility = Visibility.Visible;
               this.DialogResult = true;            
            }
            else
            {
                MessageBox.Show("Incorrect username and/orpassword", "Error", MessageBoxButton.OK);
            }
        }
        private void CancelButton_Click(object sender, RoutedEventArgs e)
        {
            this.DialogResult = false;
        }   

        private void Login_Window_Closing(object sender, System.ComponentModel.CancelEventArgs e)
        {
            Visibility = Visibility.Collapsed;
        }
    }

我将mainpage . example .cs类的实例传递给loginPage类,并在那里使用它。