Wpf 突出显示组合框中的第一项而不选择
我有一个自定义行为附加到ComboBox控件 在我想要的行为中,默认情况下,突出显示实现增量搜索的组合框的第一项。我的意思是,当结果呈现在弹出窗口中时,第一个项目应该高亮显示,但没有被选中 这意味着我不能使用Wpf 突出显示组合框中的第一项而不选择,wpf,silverlight,Wpf,Silverlight,我有一个自定义行为附加到ComboBox控件 在我想要的行为中,默认情况下,突出显示实现增量搜索的组合框的第一项。我的意思是,当结果呈现在弹出窗口中时,第一个项目应该高亮显示,但没有被选中 这意味着我不能使用SelectedIndex=0,因为它也会选择项目。我想保持组合框为空,但将项目的视觉状态设置为高亮显示 我看到ComboBoxItem中有一个IsHighlightedProperty,但它注册为只读dp,因此没有帮助 还有什么我可以做的吗?您的项目列表应该是某种项目控件(即组合框,列表框
SelectedIndex=0
,因为它也会选择项目。我想保持组合框为空,但将项目的视觉状态设置为高亮显示
我看到ComboBoxItem
中有一个IsHighlightedProperty
,但它注册为只读dp,因此没有帮助
还有什么我可以做的吗?您的项目列表应该是某种
项目控件(即组合框
,列表框
,列表视图
,树状视图
等),对吗
因此,它必须具有ItemTemplate
属性
因此在ItemTemplate
添加一个将具有
对两个属性进行多重绑定
列表项的当前数据上下文<代码>{Binding}
MultiBinding.Converter
将返回true
values[0] == ((IEnumerable)values[1]).Cast<object>().First()
值[0]==((IEnumerable)值[1]).Cast().First()
然后根据DataTrigger
中的此标志,您可以对列表中的第一项应用任何样式
希望这有帮助。您也可以使用组合框的
alternationandex
属性获取项目索引,然后使用触发器仅为第一个项目着色。将替换索引设置为始终大于组合框中项目数的值,以便只有一个项目的索引为0。突出显示项目的样式如下所示:
<Style x:Key="FirstColor" TargetType="{x:Type ListBoxItem}">
<Style.Triggers>
<Trigger Property="ComboBox.AlternationIndex" Value="0">
<Setter Property="Background" Value="{DynamicResource {x:Static SystemColors.HighlightBrushKey}}"/>
</Trigger>
</Style.Triggers>
</Style>
您的组合框将如下所示:
<ComboBox ItemsSource="{Binding Items}" SelectedIndex="-1"
AlternationCount="500"
ItemContainerStyle="{StaticResource FirstColor}"/>
HighlightBrushKey
将使用现有的高亮显示样式,而不是自定义颜色。您能否更明确地说明高亮显示?我们是在谈论[突出显示[v]]
还是将组合框保持为空,但更改第一个项目的颜色以突出显示?当然,我想保持combobox为空,但更改第一个高亮显示项目的颜色。我可能不想设置样式,但想设置comboboxitem高亮显示,它应该使用现有样式进行高亮显示。我需要从行为角度执行此操作。我不想修改现有控件。