从MainModule绑定UserControl的控件绑定

时间:2016-04-08 12:21:15

标签: wpf mvvm

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

但是点击时没有显示弹出窗口。

请帮忙

1 个答案:

答案 0 :(得分:0)

您的问题是每次运行命令时都会创建DisplayHelper的新实例,但View会在ViewModel中查找DisplayHelper属性。

为了解决这个问题,我建议您将DisplayHelper设置为ViewModel中的属性。

我希望它有所帮助,如果你需要我详细说明,请随时提出。快乐的编码。 :)