У меня есть простой WPF ListView
с двумя определенными столбцами. По умолчанию при наведении курсора мыши на любую часть строки эта строка отображается в виде отслеживания (я использую Windows 7 с Aero). Вот Xaml для простого примера, показывающего, как это работает, как и ожидалось ...
<Page
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:sys="clr-namespace:System;assembly=mscorlib">
<Grid>
<ListView>
<ListView.View>
<GridView>
<GridViewColumn Header="First" Width="200"/>
<GridViewColumn Header="Second" Width="200"/>
</GridView>
</ListView.View>
<sys:DateTime>1/2/3</sys:DateTime>
<sys:DateTime>4/5/6</sys:DateTime>
<sys:DateTime>7/8/9</sys:DateTime>
<sys:DateTime>10/11/12</sys:DateTime>
</ListView>
</Grid>
</Page>
Я хочу переопределить стиль ListViewItem
и настроить внешний вид строки при отслеживании. Вот пример Xaml, который я добавил к вышеупомянутому ListView
...
<ListView.ItemContainerStyle>
<Style TargetType="{x:Type ListViewItem}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ListBoxItem">
<Border x:Name="Bd">
<GridViewRowPresenter />
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter TargetName="Bd" Property="Background" Value="Red"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</ListView.ItemContainerStyle>
Показывает только строку в качестве отслеживания, когда мышь находится над текстом внутри одного из двух столбцов. Если указатель мыши находится между нарисованным текстом или справа от последнего столбца, он не отображается как отслеживание.
Похоже, что триггер IsMouseOver
возвращает True только в том случае, если под мышью есть фактический контент, когда я хочу, чтобы он возвращал True, если мышь находится над какой-либо частью строки, даже если эта область строки быть пустым Есть идеи, как это решить?