gpt4 book ai didi

.net - 文本 block 样式 dataTrigger 在 ItemsControl 中不起作用

转载 作者:行者123 更新时间:2023-12-01 04:39:20 25 4
gpt4 key购买 nike

我有一个 ObservableCollection<Object1>类型(下面代码中的 Messages)绑定(bind)到 ItemsControl . Object1 有两个属性,即 ErrMsgIsError .我想显示 ErrMsg如果错误(即如果 IsError 为真)则为红色,否则为黑色。

<ItemsControl
Height="Auto"
Background="White"
ItemsSource="{Binding Messages}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<StackPanel>
<TextBlock
Margin="5,0,0,0"
Text="{Binding ErrMsg}"
Width="Auto"
Foreground="Black">
<TextBlock.Style>
<Style TargetType="{x:Type TextBlock}">
<Style.Triggers>
<DataTrigger
Binding="{Binding IsError}"
Value="true">
<Setter
Property="TextBlock.Foreground"
Value="Red" />
</DataTrigger>
</Style.Triggers>
</Style>
</TextBlock.Style>
</TextBlock>
</StackPanel>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>

问题是无论IsError如何,所有消息总是以黑色显示。值(value)?

我怎样才能做到这一点?

最佳答案

那是因为您在文本 block 声明中指定了 Foreground="Black"。本地值(在元素本身上设置)覆盖样式值(包括触发器)。

要解决这个问题,只需将黑色前景的设置移动到样式中:

<TextBlock Margin="5,0,0,0"
Text="{Binding Value}"
Width="Auto">
<TextBlock.Style>
<Style TargetType="{x:Type TextBlock}">
<Setter Property="Foreground"
Value="Black"/>
<Style.Triggers>
<DataTrigger Binding="{Binding IsError}"
Value="true">
<Setter Property="Foreground"
Value="Red" />
</DataTrigger>
</Style.Triggers>
</Style>
</TextBlock.Style>
</TextBlock>

关于.net - 文本 block 样式 dataTrigger 在 ItemsControl 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4875250/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com