Я создал простой, лишенный стиль ListView, который выделяет элемент, когда свойство IsMouseOver
является истинным. Это делается путем запуска в ItemContainerStyle. Это прекрасно работает и XAML, как это:Эффект Hover в ItemContainerStyle, который находится при открытии контекстного меню
<ListView>
<ListView.ItemTemplate>
<DataTemplate>
<!--UserControl with actual content goes here-->
</DataTemplate>
</ListView.ItemTemplate>
<ListView.ItemContainerStyle>
<Style TargetType="{x:Type ListViewItem}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ListViewItem">
<!--here is a border with the ContentPresenter inside-->
</ControlTemplate>
</Setter.Value>
</Setter>
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Background" Value="Lime"/>
</Trigger>
</Style.Triggers>
</Style>
<ListView.ItemContainerStyle>
</ListView>
Однако я хотел бы также, что цвет, заданный на зависший пребывания, когда ContextMenu фактического элемента показывается правой кнопкой мыши. В основном речь идет как this one, за исключением того, что я не могу использовать (в противном случае велика) ответить там: идея заключается в том, чтобы добавить триггер, чтобы проверить, когда Контекстное открыт:
<DataTrigger Binding="{Binding ContextMenu.IsOpen}" Value="True">
<Setter Property="Background" Value="Lime"/>
</DataTrigger>
Вопрос заключается в том: что выражение привязки делать Я вхожу, чтобы выяснить, что ContextMenu.IsOpen
на фактическом содержимом, установленном в DataTemplate? Я пробовал всевозможные вещи, например, ссылаясь на ContentPresenter.ContextMenu.IsOpen и т. Д., Но никто не работал.
Помимо использования ContextMenu.IsOpen, я уже пробовал множество комбинаций триггеров на IsSelected, триггеры событий на MouseLeave и т. Д., Но также безрезультатно. Итак, второй вопрос: если трюк contextmenu не работает, есть ли другой способ получить этот эффект? В принципе, мне нужен вид списка, который не поддерживает выбор какого-либо вида, но показывает пользователя, в котором элемент мыши находится, независимо от того, какое меню частично скрывает или нет.