Отключить ContextMenu

244
16 июня 2017, 07:22

Доброй ночи. Вопрос такой: нужно отключить 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.

Answer 1

Спасибо за BasedOn:

   <ListView.ItemContainerStyle>
        <Style TargetType ="{x:Type ListViewItem}" BasedOn="{StaticResource {x:Type ListViewItem}}">
            <Setter Property="ContextMenu" Value="{StaticResource contextMenu}"/>
        </Style>
    </ListView.ItemContainerStyle>
READ ALSO
Программным способом вставить таблицу(richtextbox)

Программным способом вставить таблицу(richtextbox)

Нужно нарисовать или вставить программным способом и чтобы можно было ее растягиватьИли же вставить как строки

267
Выбрать правильный компонент

Выбрать правильный компонент

Какой программный компонент Visual Studio оптимально подходит для вывода текстовых данных, изображений? Целесообразно ли использовать для этого...

237
Выгрузка из mysql в xml

Выгрузка из mysql в xml

Каким образом можно выгрузить информацию из разных таблиц в один xml файл?

218
ASP.NET CORE. Выйти со всех клиентов если изменились данные пользователя

ASP.NET CORE. Выйти со всех клиентов если изменились данные пользователя

Необходимо, чтобы если у пользователя изменилось имя, email или пароль произошел выход со всех других устройствПолагаю, что это можно сделать...

194