Мне нужна помощь здесь. Я не могу понять, почему ни одно из решений, которые я нашел, не работает для моего случая. Давайте рассмотрим Listview с этими элементами:
<ListView.Items>
<ListViewItem>
<TextBlock xml:space="preserve"> 1 <Bold>I'm bold</Bold> </TextBlock>
</ListViewItem>
<ListViewItem>
<TextBlock xml:space="preserve"> 2 Im not </TextBlock>
</ListViewItem>
</ListView.Items>
Первоначально при наведении на каждую строку я видел выделение TextBlock светло-голубым цветом по умолчанию. Он только подчеркнул область с текстом:
Мне не нужен этот блик, я хочу один из всего ряда, и я хочу выбрать цвет. Я также хочу выделить всю строку при выборе:
Я играл со стилями, триггерами или ItemContainerStyle. Я понял, что мне нужно учитывать фон текстового поля и фон ListViewItem для области с текстом. И фон всей строки, кажется, дело ListView.ItemContainerStyle.
Результат добавления стиля для TextBox:
<Style x:Key="TextBlockStyle" TargetType="{x:Type TextBlock}">
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Foreground" Value="Black" />
<Setter Property="Background" Value="White"/>
</Trigger>
</Style.Triggers>
</Style>
<ListView Grid.Column="1" Margin="0" HorizontalContentAlignment="Stretch" BorderThickness="0" >
<ListView.Resources>
<Style BasedOn="{StaticResource TextBlockStyle}" TargetType="{x:Type TextBlock}" />
</ListView.Resources>
Затем я добавляю еще один стиль, чтобы попытаться избавиться от фона ListView под TextBox:
<Style x:Key="ListViewItemStyle" TargetType="{x:Type ListViewItem}">
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Background" Value="Gold" />
</Trigger>
</Style.Triggers>
</Style>
<ListView Grid.Column="1" Margin="0" HorizontalContentAlignment="Stretch" BorderThickness="0" >
<ListView.Resources>
<Style BasedOn="{StaticResource TextBlockStyle}" TargetType="{x:Type TextBlock}" />
<Style BasedOn="{StaticResource ListViewItemStyle}" TargetType="{x:Type ListViewItem}" />
</ListView.Resources>
Но это никак не влияет.
И попытка выделить всю строку с помощью этого не работает:
<ItemsControl.ItemContainerStyle>
<Style>
<Style.Triggers>
<Trigger Property="Control.IsMouseOver" Value="True">
<Setter Property="Control.Background" Value="Gold" />
</Trigger>
</Style.Triggers>
</Style>
</ItemsControl.ItemContainerStyle>
И пробовал несколько других предложений в течение нескольких часов. Этот: Удалить эффект наведения указателя мыши на ListView в WPF позволяет избежать выделения текста при наведении, как для TextBox и ListViewItem, но я не знаю, как изменить фон всей строки. Может ли кто-нибудь привести пример того, что я пытаюсь сделать?