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

How to bind a DataTrigger to a non-bound attribute?

这不在模板中,它是我 XAML 文档正文中的 <Label>。请注意,标签的内容设置为 'PENDING'。这是在监视服务器连接,在不同时间,代码隐藏可能会将内容的值更改为 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>

谁能告诉我应该怎么做?

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

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

无论如何,如果我是你,我会使用 Binding 来设置标签内容,并使用 converter 来处理前景色。