更好地绑定 DataTrigger

Better Binding for DataTrigger

我有一个 TextBlock,当 TextBlock 没有文本时,我想将 属性 Visibility 设置为 Collapsed。我想知道我,当然应该有更好的方法来检查 属性 TextLenght 是否等于 0.

                        <TextBlock Name="TextBlockHeader" Foreground="White" FontSize="18" FontWeight="Bold" Text="{Binding Header}" Margin="0,0,0,25">
                        <TextBlock.Style>
                            <Style TargetType="TextBlock">
                                <Style.Triggers>
                                    <DataTrigger Binding="{Binding ElementName=TextBlockHeader, Path=Text.Length}" Value="0">
                                        <Setter Property="Visibility" Value="Collapsed"></Setter>
                                    </DataTrigger>
                                </Style.Triggers>
                            </Style>
                        </TextBlock.Style>
                    </TextBlock>

在这里我必须为 TextBlock 定义一个名称,我可以在 Datatrigger Binding="{Binding ElementName=TextBlockHeader, Path=Text.Length}" 中引用它 但是我怎样才能在不必为 TextBlock?

定义名称的情况下实现相同的目标呢?

您通常会使用触发器而不是数据触发器,并将文本 属性 与 null 或空字符串进行比较。

<Style TargetType="TextBlock">
    <Style.Triggers>
        <Trigger Property="Text" Value="{x:Null}">
            <Setter Property="Visibility" Value="Collapsed"/>
        </Trigger>
        <Trigger Property="Text" Value="">
            <Setter Property="Visibility" Value="Collapsed"/>
        </Trigger>
    </Style.Triggers>
</Style>

由于 TextBlock class 似乎将 Text 属性 值强制为非空,因此对于空字符串只有第二个触发器就足够了。