更好地绑定DataTrigger

时间:2015-03-04 11:51:19

标签: c# .net wpf xaml

我有一个TextBlock,当Visibility没有文字时我想将属性Collapsed设置为TextBlock。我想知道,我确定应该有更好的方法来检查属性Lenght的{​​{1}}是否等于0。

Text

在这里,我必须为 <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}"

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

1 个答案:

答案 0 :(得分:1)

您通常会使用触发器而不是DataTriggers,并将Text属性与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类似乎强制将Text属性值强制为非null,因此仅为空字符串设置第二个Trigger就足够了。