Доброй ночи. Вопрос такой: нужно отключить ContextMenu, если кликнули не на ListItem.
Обычным HitTest в ListView не получается сделать.
Создавать отдельно менюшку в XAML, а затем кидать ее в ItemContainerStyleтоже не подойдет, так как используются библиотеки, в которых есть встроенные style-ы, и менять их запрещено. Соответственно так сделать нельзя.
Есть какие-нибудь варианты?
UPDATE: В App.xaml есть подключенный словарь ресурсов, такой себе super-словарь:
<ResourceDictionary Source="pack://application:,,,/Some;component/Styles/ControlStyles.xaml" />
В MainWindow.xaml я создаю ContextMenu как ресурс:
<ListView.Resources>
<ContextMenu x:Key="ItemContextMenu">
<MenuItem Header="Пункт меню" Command="{Binding MyCommand}"/>
</ContextMenu>
</ListView.Resources>
и затем добавляю его в ItemContainerStyle:
<ListView.ItemContainerStyle>
<Style TargetType ="{x:Type ListViewItem}">
<Setter Property="ContextMenu" Value="{StaticResource contextMenu}"/>
</Style>
</ListView.ItemContainerStyle>
И получается, что я полностью теряю стиль моего ListViewItem, определенный в словаре ресурсов в App.xaml.
Спасибо за BasedOn:
<ListView.ItemContainerStyle>
<Style TargetType ="{x:Type ListViewItem}" BasedOn="{StaticResource {x:Type ListViewItem}}">
<Setter Property="ContextMenu" Value="{StaticResource contextMenu}"/>
</Style>
</ListView.ItemContainerStyle>
Как развивать веб-проекты в 2026 году: технологии, контент E-E-A-T и факторы доверия
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники