我该如何写这个Trigger?

时间:2010-11-24 05:28:21

标签: c# wpf string xaml triggers

我正在与Wpf合作。我正在使用TabControl,在某些特定条件下,TabItem的标题包含'*'符号。我需要编写一个触发器,以便只要标题中有任何此类内容,TabItem的背景就会发生变化。我无法在xaml中找到一种方法。任何帮助PLZ。

1 个答案:

答案 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>

请注意,我的示例设置了前景,因为标签项样式似乎会覆盖背景值,这仍然会回答原始问题。