如何将DataTrigger绑定到非绑定属性?

时间:2015-04-12 17:30:44

标签: wpf xaml datatrigger

这不在模板中,它是我的XAML文档正文中的<Label>。请注意,标签的内容设置为&#39; PENDING&#39;。这是监视服务器连接,并且在不同时间,代码隐藏可能会将内容的值更改为CONNECTED或ERROR。当发生这种情况时,我希望改变文本的颜色。我以为这会做到,但它并没有...我得到的只是黑色文字。

<Label x:Name="lbl_Connected" Content="PENDING" FontWeight="Bold" Grid.Row="1" Grid.Column="1"  HorizontalAlignment="Left" VerticalAlignment="Center">
    <Label.Style>
        <Style TargetType="Label">
            <Style.Triggers>
                <DataTrigger Binding="{Binding RelativeSource={RelativeSource self}, Path=Content.Value}"  Value="CONNECTED">
                    <Setter Property="Label.Foreground" Value="Green"></Setter>
                </DataTrigger>
                <DataTrigger Binding="{Binding RelativeSource={RelativeSource self}, Path=Content.Value}" Value="PENDING">
                    <Setter Property="Label.Foreground" Value="Yellow"></Setter>
                </DataTrigger>
                <DataTrigger Binding="{Binding RelativeSource={RelativeSource self}, Path=Content.Value}" Value="ERROR">
                    <Setter Property="Label.Foreground" Value="Red"></Setter>
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </Label.Style>
</Label>

有人可以告诉我应该怎么做吗?

1 个答案:

答案 0 :(得分:1)

只需从绑定路径中删除“.Value”部分,即:

<DataTrigger Binding="{Binding RelativeSource={RelativeSource self}, Path=Content}" Value="CONNECTED">
    <Setter Property="Label.Foreground" Value="Green"></Setter>
</DataTrigger>

无论如何,如果我是你,我会使用Binding来设置Label内容,并使用converter来处理Foreground颜色。