ВСПЛЫВАЮЩЕЕ окно при щелчке правой кнопкой мыши на кнопке WPF

#wpf #mvvm #wpf-controls #contextmenu

#wpf #mvvm #wpf-элементы управления #контекстное меню

Вопрос:

У меня есть ListBox который привязан к списку элементов. ListBoxItem Привязан к datatemplate типа Button .

При нажатии кнопки я выполняю некоторое действие (отображается другое окно). Итак, я привязался к команде кнопки.

Теперь мое требование состоит в том, чтобы я показывал всплывающее окно (с некоторыми кнопками во всплывающем окне) при правом нажатии кнопки.

Как бы я мог сделать это в MVVM?

  • Girija

Ответ №1:

Вы можете просто перехватить MouseUp событие из ListBox.ItemTemplate и установить Popup.IsOpen там:

 private void SomeTemplateElement_MouseUp(object sender, MouseButtonEventArgs e)
{
      if (e.ChangedButton == MouseButton.Right)
          puMyPopup.IsOpen = true;       
}
  

Всплывающее окно — это элемент view, поэтому я не думаю, что есть причина открывать его с помощью команд viewmodel.