Привязка элемента управления UserControl от MainModule

У меня есть приложение WPF MVVM. Там у меня есть один пользовательский элемент управления с всплывающим окном. Когда я нажимаю одну из кнопок пользовательского элемента управления (Родительские привязки), я хочу показать всплывающее окно. (аналогично близко)

Command="{Binding Parent.ShowPopupCommand}"              

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

Вместо написания Dependency Property в пользовательском элементе управления я написал отдельную модель представления с интерфейсом INotifyPropertyChanged. При входе я связываю всплывающее свойство IsOpen из Login.cs

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 ответ

Ваша проблема в том, что вы создаете новые экземпляры DisplayHelper каждый раз, когда запускаете команду, но представление ищет свойство DisplayHelper во ViewModel.

Чтобы исправить это, я предлагаю установить DisplayHelper как свойство в ViewModel.

Я надеюсь, что это помогло, и если вы хотите, чтобы я уточнил, не стесняйтесь спрашивать. Удачного кодирования.:)

Другие вопросы по тегам