我正在与Wpf合作。我正在使用TabControl,在某些特定条件下,TabItem的标题包含'*'符号。我需要编写一个触发器,以便只要标题中有任何此类内容,TabItem的背景就会发生变化。我无法在xaml中找到一种方法。任何帮助PLZ。
答案 0 :(得分:2)
如果我正确理解了您的问题,我认为您遇到与提出此问题的人一样的基本问题:WPF Trigger when property value is greater than a certain amount不幸的是只链接到另一个论坛帖子:http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/a8ad8c14-95aa-4ed4-b806-d0ae874a8d26/但我会总结一下:
如果使用DataTrigger而不是常规触发器,并绑定到Header Text,则可以通过IValueConverter运行该值,这将允许您根据字符串是否具有的字符串将其转换为布尔值True / False值是不是星号。
<TabItem Header="TabItem">
<TabItem.Style>
<Style TargetType="TabItem">
<Style.Triggers>
<DataTrigger Binding="{Binding Path=Header, RelativeSource={RelativeSource Self}, Converter={StaticResource HasAsteriskConverter}}" Value="True">
<Setter Property="Foreground" Value="Blue" />
</DataTrigger>
</Style.Triggers>
</Style>
</TabItem.Style>
<Grid />
</TabItem>
请注意,我的示例设置了前景,因为标签项样式似乎会覆盖背景值,这仍然会回答原始问题。