Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 使用WPF,如何根据其子TextBlock的内容折叠TextBlock?_.net_Wpf_Data Binding_.net 3.5 - Fatal编程技术网

.net 使用WPF,如何根据其子TextBlock的内容折叠TextBlock?

.net 使用WPF,如何根据其子TextBlock的内容折叠TextBlock?,.net,wpf,data-binding,.net-3.5,.net,Wpf,Data Binding,.net 3.5,我必须显示一个大的属性/值列表。我的问题是没有所有这些属性的值,所以我不想在这种情况下显示这些属性 使用某些代码更容易理解我的问题: <StackPanel DataContext=...> <TextBlock>Info1:<TextBlock Text={Binding Path=Info1} /></TextBlock> <TextBlock>Info2:<TextBlock Text={Binding Path=Info2

我必须显示一个大的属性/值列表。我的问题是没有所有这些属性的值,所以我不想在这种情况下显示这些属性

使用某些代码更容易理解我的问题:

<StackPanel DataContext=...>
<TextBlock>Info1:<TextBlock Text={Binding Path=Info1} /></TextBlock>
<TextBlock>Info2:<TextBlock Text={Binding Path=Info2} /></TextBlock>
<TextBlock>Info3:<TextBlock Text={Binding Path=Info3} /></TextBlock>
</StackPanel>

信息1:
信息2:
信息3:
基本上,根据子TextBlock的内容,我希望折叠父TextBlock。我的想法是使用一种适用于所有文本块的样式,并检查内容,如果没有,则折叠父文本块。。。不幸的是,我无法从DataTrigger访问父级。也许你会有一个更简洁的解决方案:)


非常感谢你的帮助

您可以使用一个简单的转换器将外部文本块的可见性绑定到内部文本块的文本:

<TextBlock Name="outer1" 
           Visibility="{Binding ElementName=inner1, Path=Text, Converter={StaticResource MyConverter}}">
    Info1:<TextBlock Name="inner1" Text="{Binding Path=Info1}" />
</TextBlock>

信息1:
或者将外部文本块的可见性直接绑定到Info1:

 <TextBlock Visibility="{Binding Path=Info1, Converter={StaticResource MyConverter}}">
    Info1:<TextBlock Text="{Binding Path=Info1}" />
</TextBlock>

信息1:

如果在模板或样式中,可以使用触发器设置外部文本块的可见性

例如,在以下情况下:


根据需要调整触发器。例如,当它为
null
时,您可以将其隐藏起来,或者使用gcores建议的转换器进行更奇特的检查

<DataTemplate.Triggers>
    <DataTrigger Binding="{Binding Path=Info1}" Value="">
        <Setter Property="Visibility" TargetName="pnlInfo1" Value="Hidden" />
    </DataTrigger>
    <!-- and so on ... -->
</DataTemplate.Triggers>