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

时间:2019-01-14 13:25:26

标签: wpf mvvm datatrigger

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

为简单起见(避免了ValueConverter的开销),我尝试颠倒逻辑并将FontWeight的默认Bold应用于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>

有什么想法吗?

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

1 个答案:

答案 0 :(得分:0)

FontWeight设置器中设置Style属性的默认值:

<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