ComboxBox项目鼠标颜色不起作用

时间:2018-01-16 21:35:12

标签: wpf xaml

我有一个包含以下xaml的ComboBox。问题是我希望当鼠标悬停时ComboxItem的背景为绿色,但它不起作用。我试过这里发布的解决方案ComboBox item color,但它没有帮助。

我也尝试过像编辑代码一样编辑ComBoxItem的模板。但是这些解决方案都不起作用。请帮忙。

在窗口资源中,我定义了以下项目

 <lib:MetroWindow.Resources>
            <converter:EnumToVisibilityConverter
                x:Key="EnumToVisibility"></converter:EnumToVisibilityConverter>

            <x:Array
                Type="{x:Type sys:String}"
                x:Key="ImageFormatsArray">
                <sys:String>Bmp</sys:String>
                <sys:String>Png</sys:String>
                <sys:String>Jpg</sys:String>
                <sys:String>Tif</sys:String>
                <sys:String>Gif</sys:String>
            </x:Array>
        </lib:MetroWindow.Resources>

  <ComboBox
                    x:Name="CmbItems"
                    HorizontalAlignment="Left"
                    SelectedIndex="0"
                    ItemsSource="{StaticResource ImageFormatsArray}"
                    SelectedValue="{Binding SelectedImageFormat}">
                    <ComboBox.Resources>
                        <SolidColorBrush
                            x:Key="{x:Static SystemColors.HighlightBrushKey}"
                            Color="Green" />
                    </ComboBox.Resources>
                    <!--<ComboBox.ItemContainerStyle>
                        <Style
                            TargetType="{x:Type ComboBoxItem}">
                            <Setter
                                Property="Background"
                                Value="{StaticResource ControlsDarkBackgroundBrush}"></Setter>
                            <Setter
                                Property="Template">
                                <Setter.Value>
                                    <ControlTemplate
                                        TargetType="{x:Type ComboBoxItem}">
                                        <ControlTemplate.Triggers>
                                            <Trigger
                                                Property="IsMouseOver"
                                                Value="true">
                                                <Setter
                                                    Property="Background"
                                                    Value="{StaticResource ControlsDarkBackgroundBrush}"></Setter>
                                            </Trigger>
                                        </ControlTemplate.Triggers>
                                    </ControlTemplate>
                                </Setter.Value>
                            </Setter>
                        </Style>
                    </ComboBox.ItemContainerStyle>-->
                    <!--<ComboBox.ItemTemplate>
                        <DataTemplate>
                            <TextBlock
                                Text="{Binding}">
                                <TextBlock.Style>
                                    <Style
                                        TargetType="{x:Type TextBlock}">
                                        <Style.Triggers>
                                            <Trigger
                                                Property="IsMouseOver"
                                                Value="true">
                                                <Setter
                                                    Property="Background"
                                                    Value="Black"></Setter>
                                            </Trigger>
                                        </Style.Triggers>
                                    </Style>
                                </TextBlock.Style>
                            </TextBlock>
                        </DataTemplate>
                    </ComboBox.ItemTemplate>-->
                </ComboBox>
            </StackPanel>

1 个答案:

答案 0 :(得分:0)

这是一个有效的例子,拿你需要的东西

 <ComboBox.ItemContainerStyle>
            <Style TargetType="{x:Type ComboBoxItem}" >
                <Setter Property="Template">
                    <Setter.Value>
                        <ControlTemplate TargetType="ComboBoxItem">
                            <ControlTemplate.Triggers>
                                <Trigger Property="IsMouseOver" Value="True">
                                    <Setter Property="Background" Value="Red" />
                                </Trigger>
                            </ControlTemplate.Triggers>
                            <StackPanel Background="{TemplateBinding Background}" >
                                <ContentPresenter></ContentPresenter>
                            </StackPanel>
                        </ControlTemplate>
                    </Setter.Value>
                </Setter>
            </Style>
        </ComboBox.ItemContainerStyle>
        <ComboBox.ItemTemplate>
            <DataTemplate>
                <TextBlock Text="{Binding Name}"></TextBlock>
            </DataTemplate>
        </ComboBox.ItemTemplate>