我有一个ComboBox,绑定到一个DataTable。我想添加一个额外的ComboBoxItem到列表的顶部,我可以放置一个链接来自定义列表。目前我只是在我的DataTable顶部插入一个虚拟行,然后在ComboBox上使用DataTrigger使其正确显示。但是,我没有得到正确的结果。问题样式数据绑定WPF ComboBoxItem
我试过两种方法。首先,我的DataTrigger用包含TextBlock的ControlTemplate替换虚拟项。
<ComboBox IsEditable="True" Name="comboWell" ItemsSource="{Binding}" DisplayMemberPath="wellId">
<ComboBox.ItemContainerStyle>
<Style TargetType="{x:Type ComboBoxItem}">
<Style.Triggers>
<DataTrigger Binding="{Binding wellId}" Value="(settings)">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ComboBoxItem">
<TextBlock Text="Customize..." />
</ControlTemplate>
</Setter.Value>
</Setter>
</DataTrigger>
</Style.Triggers>
</Style>
</ComboBox.ItemContainerStyle>
</ComboBox>
结果看起来不错,但该项目上没有鼠标悬停突出显示。列表的其余部分工作正常,但是当我将鼠标悬停在其上时,其中一项完全没有反应。我尝试添加额外的触发器和样式来应用鼠标悬停效果,但我没有任何更改。
我试过的第二种方法只是改变项目的外观,而不是完全用ControlTemplate替换它。
<ComboBox IsEditable="True" Name="comboWell" ItemsSource="{Binding}" DisplayMemberPath="wellId">
<ComboBox.ItemContainerStyle>
<Style TargetType="{x:Type ComboBoxItem}">
<Style.Triggers>
<DataTrigger Binding="{Binding wellId}" Value="(settings)">
<Setter Property="Content" Value="Customize..." />
</DataTrigger>
</Style.Triggers>
</Style>
</ComboBox.ItemContainerStyle>
</ComboBox>
这一个函数就像一个常规列表项,鼠标悬停工作正常。但是,该项目是空白的。原始文本和我试图在DataTrigger中设置的文本都没有。没有错误,只是一个空的列表项。
有没有更好的方法来实现这个目标?
这个伎俩!非常感谢你! – Nairou