Привязка элемента управления 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.
Я надеюсь, что это помогло, и если вы хотите, чтобы я уточнил, не стесняйтесь спрашивать. Удачного кодирования.:)