TextBlock 文本的整数值 0 上的 DataTrigger 不起作用

DataTrigger on integer value 0 for TextBlock text doesn't work

我有一个 TextBlock 显示视图模型中可用的条目数。现在我尝试用 FontWeight Bold 格式化这个计数,如果有超过零个条目。

为简单起见(避免 ValueConverter 的开销)我颠倒了逻辑并将 Bold 的默认 FontWeight 应用于 TextBlock 并试图覆盖此 FontWeight 通过 DataTrigger,如果没有条目。

但恐怕这行不通,计数一直显示为粗体:

<TextBlock Text="{Binding Entries.Count, StringFormat=' [{0}]'}" FontWeight="Bold">
    <TextBlock.Style>
        <Style TargetType="{x:Type TextBlock}">
            <Style.Triggers>
                <DataTrigger Binding="{Binding SharedNodeNames.Count}" Value="0">
                    <Setter Property="FontWeight" Value="Regular" />
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </TextBlock.Style>
</TextBlock>

知道这里出了什么问题吗?

(出于测试目的,我删除了 TextBlock Text 绑定中的 StringFormat 部分,但这没有什么区别)

Stylesetter中设置FontWeight属性的默认值:

<TextBlock Text="{Binding Entries.Count, StringFormat=' [{0}]'}">
    <TextBlock.Style>
        <Style TargetType="{x:Type TextBlock}">
            <Setter Property="FontWeight" Value="Bold" />
            <Style.Triggers>
                <DataTrigger Binding="{Binding SharedNodeNames.Count}" Value="0">
                    <Setter Property="FontWeight" Value="Regular" />
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </TextBlock.Style>
</TextBlock>

本地值优先于样式设置的值:https://docs.microsoft.com/en-us/dotnet/framework/wpf/advanced/dependency-property-value-precedence