代码之家  ›  专栏  ›  技术社区  ›  viky

我怎么写这个触发器?

  •  0
  • viky  · 技术社区  · 14 年前

    我和Wpf一起工作。我正在使用TabControl,在某些特定条件下,TabItem的头包含“*”符号。我需要编写一个触发器,以便每当标题中有任何此类内容时,TabItem的背景都会发生更改。我在xaml中找不到这样做的方法。有什么需要帮忙的吗。

    1 回复  |  直到 14 年前
        1
  •  2
  •   Community CDub    8 年前

    如果我正确地理解了你的问题,我认为你和问这个问题的人有着同样的根本问题: 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而不是常规触发器,并绑定到头文本,则可以通过IValueConverter运行该值,该值将允许您根据字符串是否有星号将其转换为布尔真/假值。

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

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