2014-07-11 5 views
0

Я начинаю использовать Silverlight и в ситуации, когда мне приходилось всплывать дочерняя ветка входа в систему при запуске (первое, что должно появиться при запуске программы, должно появиться при входе в систему childwindow). И когда пароль вводится правильно, тогда отображаются элементы пользовательского интерфейса. (не раньше)Как использовать childwindow для страницы входа в текущую ситуацию

И я пытаюсь сделать это, загрузив дочерний элемент в MainPage.xaml.cs и установив его видимость на Collapsed, и идея заключается в том, что пользователь вводит правильный пароль и имя пользователя, а затем видимость элементов пользовательского интерфейса (MainPage IntializeComponents();) должны быть видимыми.

Я попытался так, как это:

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; 
     } 
    } 

Проблема здесь даже при входе в правильное informaton я установить visiblity видимым, но он все еще ничего не показывает. увидеть это:

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;    
        } 

Я думаю, что мне нужно, чтобы установить visiblity видимым в классе MainPage.xaml.cs (не в классе loginChildWindow.cs), но как знать, что введенный пароль Логин и имя пользователя в loginChildWindow.cs является правильно или нет, чтобы я отображал видимость, когда данные вводятся правильно в MainPage.xaml.cs.

Если кто-то знает какую-либо альтернативу для решения этой проблемы, пожалуйста, помогите мне.

ответ

0

Наконец я сделал решение Thsi проблемы, как это (для будущих читателей):

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.xaml.cs в класс loginPage и использовать его там.