我有WPF MVVM应用程序。我有一个弹出窗口的用户控件。当我点击其中一个用户控件按钮(父绑定)时,我希望显示弹出窗口。 (同样接近)
Command="{Binding Parent.ShowPopupCommand}"
<Popup Name="Popup1" IsEnabled="True"
IsOpen="{Binding DisplayHelper.IsOpenPopup, Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" >
</Popup>
我没有在用户控件中编写Dependency Property,而是使用INotifyPropertyChanged接口编写了单独的视图模型。在登录时,我从Login.cs绑定弹出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;
}
但是点击时没有显示弹出窗口。
请帮忙
答案 0 :(得分:0)
您的问题是每次运行命令时都会创建DisplayHelper的新实例,但View会在ViewModel中查找DisplayHelper属性。
为了解决这个问题,我建议您将DisplayHelper设置为ViewModel中的属性。
我希望它有所帮助,如果你需要我详细说明,请随时提出。快乐的编码。 :)