私は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プロパティを探し、この
where(view)私はユーザーコントロールを使用しています。私はDisplayHelperをviewmodelまたはLoginビューモデルのプロパティとして使用しますか? –
あなたのViewModelやログインモデルの構造はわかりませんが、どちらかに入れることができます。ちょうどBindingを正しく使うと良いです。試してみてください。それをうまく動作させることができない場合は、コードを投稿してください。 –