2016-04-08 3 views
1

私はWPF MVVMアプリケーションを持っています。そこに私はポップアップを持つ1つのユーザーコントロールがあります。ユーザーコントロールのボタン(親バインディング)の1つをクリックすると、ポップアップを表示します。 (同様に近い)MainModuleからUserControlのコントロールバインディングをバインドします

Command="{Binding Parent.ShowPopupCommand}"    

<Popup Name="Popup1" IsEnabled="True"    
IsOpen="{Binding DisplayHelper.IsOpenPopup, Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" > 
</Popup> 

代わりに、ユーザーコントロールに依存プロパティを書く私はINotifyPropertyChangedインターフェイスを持つ別のビューモデルを書きました。ログイン時私はLogin.csからPopup IsOpenプロパティをバインドしています

RelayCommand _showPopupCommand; 
RelayCommand _hidePopupCommand; 


public ICommand ShowPopupCommand 
     { 
      get 
      { 
       if (_showPopupCommand == null) 
       { 
        _showPopupCommand = new RelayCommand(param => this.ShowPopup(), null); 

       } 
       return _showPopupCommand; 
      } 
     } 

     public ICommand HidePopupCommand 
     { 
      get 
      { 
       if (_hidePopupCommand == null) 
       { 
        _hidePopupCommand = new RelayCommand(param => this.HidePopup(), null); 

       } 
       return _hidePopupCommand; 
      } 
     } 

     private void HidePopup() 
     { 
      DisplayHelper ds = new DisplayHelper(); 
      ds.IsOpenPopup = false; 
     } 

     private void ShowPopup() 
     { 
      DisplayHelper ds = new DisplayHelper(); 
      ds.IsOpenPopup = true; 
     } 

ポップアップがクリックで表示されません。

あなたの問題はあなたがコマンドを実行するDisplayHelperたびの新しいインスタンスを作成することですが、ビューはビューモデルでDisplayHelperプロパティを探し、この

答えて

0

に助けてください。

これを修正するには、DisplayMelのプロパティとしてDisplayHelperを設定することをお勧めします。

私はそれが助けてくれることを願っています。あなたが精緻化する必要がある場合は、お気軽にお問い合わせください。ハッピーコーディング。 :)

+0

where(view)私はユーザーコントロールを使用しています。私はDisplayHelperをviewmodelまたはLoginビューモデルのプロパティとして使用しますか? –

+0

あなたのViewModelやログインモデルの構造はわかりませんが、どちらかに入れることができます。ちょうどBindingを正しく使うと良いです。試してみてください。それをうまく動作させることができない場合は、コードを投稿してください。 –

関連する問題