我遇到了这个问题:如果我从我的组合框中选择项目并且它的属性 .IsNotCorrect 为真,那么将这个 selecteditem 文本设为红色和粗体,并且组合框中的所有其他项目都是黑色的。这是我这样做的尝试,但没有任何反应:
<ComboBox x:Name="REASON_ID" DisplayMemberPath="Name" IsReadOnly="True" IsEditable="True"
SelectedItem="{Binding SelectedReason, Mode=TwoWay,
UpdateSourceTrigger=PropertyChanged, ValidatesOnDataErrors=True}">
<ComboBox.ItemsSource>
<CompositeCollection>
<ComboBoxItem Content="{DynamicResource lang_Common_SelectItem}"
IsEnabled="False"/>
<CollectionContainer
Collection="{Binding Source={StaticResource StaticReasons}}"/>
<Style TargetType="{x:Type ComboBoxItem}">
<Style.Triggers>
<DataTrigger Binding="{Binding Path=SelectedItem.IsNotCorrect, ElementName=REASON_ID}" Value="True">
<Setter Property="Foreground" Value="Red" />
<Setter Property="FontWeight" Value="Bold" />
</DataTrigger>
</Style.Triggers>
</Style>
</CompositeCollection>
</ComboBox.ItemsSource>
</ComboBox>
如果需要,下拉列表中的所有项目(IsNotCorrect
粗体和红色),然后从显示的集合中删除您的样式并将其放入ComboBox.Resources
. 绑定也应该调整:
<ComboBox.Resources>
<Style TargetType="{x:Type ComboBoxItem}">
<Style.Triggers>
<DataTrigger Binding="{Binding IsNotCorrect}" Value="True">
<Setter Property="Foreground" Value="Red" />
<Setter Property="FontWeight" Value="Bold" />
</DataTrigger>
</Style.Triggers>
</Style>
</ComboBox.Resources>
如果你想改变文本字段中的代表性,那么你必须修改ControlTemplate
的ComboBox
。
ControlTemplate
ComboBox的默认值(参见ComboBox 样式和模板)复制到Resources
of 元素,其中包含您的 ComboBox。<Style x:Key="{x:Type ComboBox}"
到<Style x:Key="UsrDefinedStyle"
在复制的代码。TextBox
名称PART_EditableTextBox
并删除Style="{x:Null}"
。ComboBox
为Style="{StaticResource UsrDefinedStyle}"
放入Resources
您的ComboBox
:
<Style TargetType="{x:Type TextBox}" BasedOn="{x:Null}">
<Style.Triggers>
<DataTrigger Binding="{Binding SelectedItem.IsNotCorrect, RelativeSource={RelativeSource AncestorType=ComboBox}}" Value="True">
<Setter Property="Foreground" Value="Red" />
<Setter Property="FontWeight" Value="Bold" />
</DataTrigger>
</Style.Triggers>
</Style>
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句