如何根据属性的值更改TextBlock的可见性

时间:2017-10-02 20:21:13

标签: wpf treeview datatrigger

我设法让TreeView在WPF应用程序中运行。我使用HierarchialDataTemplates来显示数据。我的数据是车辆清单,其中每辆车都有一个Territory属性。

有时Territory属性为Null。当车辆尚未分配到地理区域时会发生这种情况。

我想在TreeView中使用的视觉表示应该是这样的:

  

Vehicle_Name (Territory_Name)

当Vehicle.Territory为空时,我希望删除粗体文本。如果它仍然存在于车辆名称末尾的这个奇怪的空括号。

我尝试过使用DataTrigger,但粗体文本仍然存在,即使是空的Territory值。

<HierarchicalDataTemplate DataType="{x:Type self:TreeVehicleItem}" ItemsSource="{Binding ClientLocations}">
    <StackPanel Orientation="Horizontal">
        <TextBlock Text="{Binding Name}" />
        <TextBlock FontWeight="Bold" Padding="10 0 0 0">
            <TextBlock.Style>
                <Style TargetType="TextBlock">
                    <Setter Property="Visibility" Value="Visible" />
                    <Style.Triggers>
                        <DataTrigger Binding="{Binding Territory}" Value="x:Null">
                            <Setter Property="Visibility" Value="Collapsed" />
                        </DataTrigger>
                    </Style.Triggers>
                </Style>
            </TextBlock.Style>
        (<Run Text="{Binding Territory.Name}" />)
        </TextBlock>
    </StackPanel>
</HierarchicalDataTemplate>

我已经确认Territory属性确实是Null,而不只是一个空列表。

当Territory属性为Null时,我需要做什么才能使粗体TextBlock消失?

1 个答案:

答案 0 :(得分:3)

这是字符串"x:Null"

 Value="x:Null"

这是markup extension NullExtension,返回实际的null。这就是你想要的。

 Value="{x:Null}"