【问题标题】:How to change a TextBlock's visibility based on a property's value如何根据属性值更改 TextBlock 的可见性
【发布时间】:2018-03-13 23:23:47
【问题描述】:

我已经设法让 TreeView 在 WPF 应用程序中工作。我正在使用 HierarchialDataTemplates 来显示数据。我的数据是一个 Vehicles 列表,其中每个 Vehicles 都有一个 Territory 属性。

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

我希望在 TreeView 中的可视化表示应该是这样的:

Vehicle_Name (Territory_Name)

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

我已尝试使用 DataTrigger,但粗体文本仍然存在,即使是 null 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 消失?

【问题讨论】:

    标签: wpf treeview datatrigger


    【解决方案1】:

    这是字符串"x:Null"

     Value="x:Null"
    

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

     Value="{x:Null}"
    

    【讨论】:

    • * 拍头 * 非常感谢 Ed!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-10-29
    • 2020-05-14
    • 2019-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-27
    相关资源
    最近更新 更多