找到这个问题的答案将关闭此文章在这里的工作:Set style on ComboBoxItem from template for ComboBox
我申请修改ComboBoxItem模板,我的“编辑ComboBox”的模板。您可以在下面看到这里,我在IsEditable风格触发增加了一个“ItemContainerStyle”属性:
<Style x:Key="CmbRoundedAutoComplete" TargetType="{x:Type ComboBox}">
<Setter Property="FocusVisualStyle" Value="{StaticResource FocusVisual}"/>
<Setter Property="Background" Value="{StaticResource ComboBox.Static.Background}"/>
<Setter Property="BorderBrush" Value="{StaticResource ComboBox.Static.Border}"/>
<Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.WindowTextBrushKey}}"/>
<Setter Property="BorderThickness" Value="1"/>
<Setter Property="ScrollViewer.HorizontalScrollBarVisibility" Value="Auto"/>
<Setter Property="ScrollViewer.VerticalScrollBarVisibility" Value="Auto"/>
<Setter Property="Padding" Value="6,3,5,3"/>
<Setter Property="ScrollViewer.CanContentScroll" Value="true"/>
<Setter Property="ScrollViewer.PanningMode" Value="Both"/>
<Setter Property="Stylus.IsFlicksEnabled" Value="False"/>
<Setter Property="Template" Value="{StaticResource ComboBoxTemplate}"/>
<Style.Triggers>
<Trigger Property="IsEditable" Value="true">
<Setter Property="IsTabStop" Value="false"/>
<Setter Property="Padding" Value="2"/>
<Setter Property="Template" Value="{StaticResource ComboBoxEditableTemplate}"/>
<!-- Added this line here -->
<Setter Property="ItemContainerStyle" Value="{DynamicResource ComboBoxItemShieldStyle}" />
</Trigger>
</Style.Triggers>
</Style>
有一个MultiTrigger位于自定义“ItemContainerStyle”控件模板(重要的是要注意的一部分,这是样式不是实际的ControlTemplate。)。 ControlTemplate元素驻留在样式中。
您可以通过手动将ComboBoxItem添加到XAML中现有的ComboBox并生成一个模板来生成一个“ComboboxItem”模板。
<MultiTrigger>
<MultiTrigger.Conditions>
<Condition Property="IsSelected" Value="True"/>
<Condition Property="IsMouseOver" Value="False"/>
<Condition Property="IsKeyboardFocused" Value="False"/>
</MultiTrigger.Conditions>
<!-- ANSWER IS HERE Change color on the 2 below lines for border & background -->
<Setter Property="Background" TargetName="Bd" Value="#D1E8FF"/>
<Setter Property="BorderBrush" TargetName="Bd" Value="#66A7E8"/>
</MultiTrigger>
你可以在上面的代码中看到我曾经评论说:“答案就在这里”,您可以更改已通过在组合框中场无论是打字选择或导航到它与该项目的背景颜色箭头键。
在“结果”(以红色文字显示)中,当前项目的“背景”是相当蓝色的颜色,而不是上述原始问题中的蹩脚灰色...
最终结果:
我们可以有一个解决方案来突出显示可能项目的一部分,例如:当我输入“办公室”时,有3名候选人(见上述图片),3名候选人的红色文字“办公室”是红色的? –