2009-08-11 11 views
2

У меня есть элемент управления WPF ListView с кодом ContextMenu, написанным в коде XAML. С каждым щелчком правой кнопки мыши на ListView отображается ContextMenu, даже если в ListView нет элементов.WPF: Подавить ContextMenu для ListView

Это поведение, которое я не хочу. ContextMenu должен открываться только в том случае, если в ListView есть элементы. У меня нет проблем с подсчетом элементов, но я не нашел подходящего события для подавления ContextMenu.

Как я могу это сделать?

ответ

6

Ручки ContextMenuOpening события ListView, чтобы отменить меню, если список пуст:

private void listView_ContextMenuOpening(object sender, ContextMenuEventArgs e) 
    { 
     if (listView.Items.Count == 0) 
      e.Handled = true; 
    } 
+0

+1 За то, что лучше и более простой ответ, чем мой. –

+0

Спасибо. Он работает так, как должен. – TalkingCode

0

Мои навыки WPF все еще находятся на уровне новичков, поэтому это может быть не лучший ответ.

Я бы привязал свойство ListView ContextMenu к свойству в коде. Это свойство может проверять ваш список и возвращать либо нулевое, либо соответствующее контекстное меню по мере необходимости. Поскольку все это основано на деталях уровня представления, оно не затрагивает вашу бизнес-логику и приводит к поведению, которое вы хотите.

Позволь мне знать, если вы хотите, образец коды для этого приближалось