У меня есть ListView
, и я хотел бы настроить контекстное меню, которое я могу открыть не только при щелчке правой кнопкой мыши по тексту в некотором столбце, но и в любом месте на ListViewItem
, для этого я подумал, что ' я просто установил ContextMenu
с помощью установщика стилей, так как я не могу напрямую получить доступ к ListViewItem
.
К сожалению, когда вы попытаетесь сделать это так, он не скомпилируется:
<Style TargetType="ListViewItem">
<Setter Property="ContextMenu">
<Setter.Value>
<ContextMenu>
<MenuItem Header="Header" Click="Handler"/>
...
</ContextMenu>
</Setter.Value>
</Setter>
</Style>
Ошибка 102 «Обработчик» недействителен.
«Нажмите» не событие на
'System.Windows.Controls.GridView'.
Я подумал, что вы можете избежать этого, используя EventSetter
для Click
события. Но очевидно, что код становится достаточно раздутым от всех необходимых вам тегов-оберток.
У меня вопрос: есть ли обходной путь, чтобы вам не приходилось иметь дело с EventSetters
.
Редактировать: См. этот вопрос для объяснения , почему возникает эта ошибка.