【问题标题】:Delete MouseOver Effect on custom Combobox style wpf删除自定义组合框样式 wpf 上的 MouseOver 效果
【发布时间】:2020-04-04 13:00:16
【问题描述】:

在我的 wpf 文档中,我制作了一个自定义组合框样式,如下所示:

<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>

但是每当我将鼠标悬停在其中一个 ComboboxItems 上时,我仍然会获得默认的悬停颜色,那么如何将其移除并放置我的颜色?

我对编码比较陌生,因此我们将不胜感激。

【问题讨论】:

    标签: wpf combobox mouseover styling


    【解决方案1】:

    您必须覆盖 ComboBoxItem 的默认 ControlTemplate 才能覆盖默认的视觉状态触发器。
    检查Microsoft Docs: Control Styles and Templates 以查看框架控件的默认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>
    

    【讨论】:

      猜你喜欢
      • 2015-10-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-17
      • 2011-01-28
      • 2011-02-07
      相关资源
      最近更新 更多