2017-08-23 3 views
0

私はクラスXを持っていて、グリッドの下に隠れているボタンがいくつかあります。ダブルクリックで表示されるボタンの1つがログインポップアップを開きます(Yクラスで宣言されています)。成功したログインの後、私はグリッドを非表示にしたいと思っています(ボタンがグリッドの後ろにあるので)。 Xクラスで宣言されたグリッドをYクラスで正常にログインした後に隠す方法を教えてください。ログイン成功後、別のクラスで宣言されたグリッドの可視性を変更するにはどうすればいいですか?

class X code: 

<Grid Background="Black" x:Name="smallAGrid" x:FieldModifier="public" 
Opacity="0.8" Grid.Column="1" Visibility="Visible" /> 
    <Grid Background="Black" x:Name="bigBGrid" x:FieldModifier="public" 
    Opacity="0.8" Grid.Column="1" Grid.ColumnSpan="2" Visibility="Visible"/> 
    <Grid Name="ModeGrid" > 
    <Button Content="Gateway" Height="42" x:Name="maintenanceMode" 
     Width="148" Click="maintenanceMode_Click"/> 
     <Popup Placement="Center" x:Name="passwordProtectionPopUp" 
      AllowsTransparency="True"> 
      <Grid> 
       <local:Y Width="350" Height="Auto" Margin="0,0,0,0" />               
      </Grid> 
     </Popup> 
    </Grid> 

class Y code: 

private void Submit_Click(object sender, RoutedEventArgs e) 
{ 
    try 
    { 
     if (sqlCon.State == System.Data.ConnectionState.Closed) 
       sqlCon.Open(); 
      //rest of the login code here 
    } 
      // after Successful login i would like to do 
      X x = new X(); 
      x.smallAGrid.Visibility = Visibility.Hidden; 
      } 
    catch 
    { 
    } 

注:しかし、ブレークポイントを置く.After可視性を変更することがIAMができない、私はそれが私のXクラスと、この可視性機能へと進むチェックしますが、それを変更しません?

+0

'Login_Success'コールバック/イベントinsidの登録e clss X、そのイベント/コールバックが呼び出されたときグリッド下のボタンを無効にする –

+0

グリッドの下にあるボタンを無効にしたくない。私はちょうど私のグリッドが私のコントロールをカバーするようにして、誰かがグリッドが隠れていて、ボタンを見ることができたよりもうまくいっていたら。どのようにしてクラスXのクラスをYクラスから隠すことができますか。 – user6850427

+0

Yクラスで何が起こるでしょうか。私はこれらの2つのパラメータを取るコンストラクタを持っていないのですか?クリックするとすぐにログインウィンドウが開き、成功すると成功メッセージが表示されます。 Iamはとても混乱していますか? - – user6850427

答えて

0

はちょうどあなたがのように静的アクセスしたいコントロールを宣言し、その非常に簡単に答えるました元のクラスとオリジナルのコントロール名に、あなたがこれを行うにアクセスしたい他のクラスに割り当てる:

あなたがポップアップを開く前に比べて、クラスYでコールバック関数や、イベントを提供しないのはなぜ
y class code 
private void Submit_Click(object sender, RoutedEventArgs e) 
{ 
    try 
    { 
     if (sqlCon.State == System.Data.ConnectionState.Closed) 
      sqlCon.Open(); 
      //rest of the login code here 
      Grid vr= X.small; 
      vr.Visibility = Visibility.Collapsed; 
      } 

     catch 
    { 
    } 
     X Class code 
     public static Grid small; 
    public X() 
    { 
    InitializeComponent(); 
    small= smallAGrid // (name of grid control) 
    } 
0

あなたに似たものを使用することができ、あなたは、ログインウィンドウを表す親ウィンドウとクラスYを表すクラスXを持っていると仮定すると:

Class X 
{ 
    Control grid; //grid which you want to show/hide 
    Button btnLogin; //button which opens up login window 

    public void BtnLogin_DoubleClicked(object sender, EventArgs args) 
    { 
     var loginWindow = new Y(LoginSuccessCallback, LoginFailureCallback); 
     loginWindow.ShowDialog(); 
    } 

    private void LoginSuccessCallback() 
    { 
     grid.Visibility = Visibility.Collapsed; 
    } 

    private void LoginFailureCallback() 
    { 
     grid.Visibility = Visibility.Visible; 
    } 
} 
関連する問題