如何将 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 来处理前景色。
这不在模板中,它是我 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 来处理前景色。