Удалить эффект MouseOver на пользовательском wpf в стиле Combobox - PullRequest
0 голосов
/ 04 апреля 2020

В своем документе wpf я создал собственный стиль Combobox, например:

<ComboBox Background="#222222" BorderBrush="Black" Grid.Column="1" Height="30" Width="250">
<ComboBox.Resources>
    <SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="#262626" />
</ComboBox.Resources>
<ComboBox.ItemContainerStyle>
    <Style TargetType="{x:Type ComboBoxItem}">
        <Style.Triggers> <Trigger Property="IsMouseOver" Value="true"> <Setter Property="Background" Value="#262626" /> </Trigger> </Style.Triggers>
    </Style>
</ComboBox.ItemContainerStyle>
<ComboBoxItem Foreground="White" Name="Item1">Item1

</ComboBoxItem>
<ComboBoxItem Foreground="White" Name="Item2">Item2</ComboBoxItem>
<ComboBoxItem Foreground="White" Name="Item3">Item3</ComboBoxItem>
<ComboBoxItem Foreground="White" Name="Item4">Item4</ComboBoxItem>
<ComboBoxItem Foreground="White" Name="Item5">Item5</ComboBoxItem>
<ComboBoxItem Foreground="White" Name="Item6">Item6</ComboBoxItem>

Но всякий раз, когда я наводю указатель мыши на один из элементов ComboboxItem, я все равно получаю цвет при наведении по умолчанию, так как я могу удалить его и поместить свой цвет?

Я относительно новичок в кодировании, поэтому любая помощь будет оценена.

1 Ответ

1 голос
/ 05 апреля 2020

Необходимо переопределить значение ControlTemplate по умолчанию ComboBoxItem, чтобы переопределить триггеры визуального состояния по умолчанию.
Проверить Документы Microsoft: стили управления и шаблоны , чтобы увидеть значение по умолчанию Style реализация элементов управления каркасом.

ComboBoxItem Style

<ComboBox>
  <ComboBox.ItemContainerStyle>
    <Style TargetType="ComboBoxItem">
      <Setter Property="Template">
        <Setter.Value>
          <ControlTemplate TargetType="ComboBoxItem">
            <Border BorderBrush="{TemplateBinding BorderBrush}"
                    BorderThickness="{TemplateBinding BorderThickness}"
                    Background="{TemplateBinding Background}">
              <ContentPresenter />
            </Border>

            <ControlTemplate.Triggers> 
              <Trigger Property="IsMouseOver" 
                       Value="True"> 
                <Setter Property="Background" 
                        Value="#262626" /> 
              </Trigger> 
            </ControlTemplate.Triggers>
          </ControlTemplate>
        </Setter.Value>
      <Setter>
    </Style>
  </ComboBox.ItemContainerStyle>
</ComboBox>
...