首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用WPF,如何根据其子TextBlock的内容折叠TextBlock?

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

Stack Overflow用户
提问于 2009-04-17 08:28:58
回答 2查看 1.4K关注 0票数 1

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

使用一些代码可以更容易地理解我的问题:

代码语言:javascript
复制
<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>

基本上,根据子TextBlock的内容,我希望折叠父TextBlock。我的想法是使用一种适用于所有TextBlock的样式,并检查内容,如果没有内容,则折叠父对象……不幸的是,我无法从DataTrigger访问父进程。您可能会有一个比这更简洁的解决方案:)

非常感谢你的帮助!

EN

回答 2

Stack Overflow用户

发布于 2009-04-17 09:55:35

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

代码语言:javascript
复制
<TextBlock Name="outer1" 
           Visibility="{Binding ElementName=inner1, Path=Text, Converter={StaticResource MyConverter}}">
    Info1:<TextBlock Name="inner1" Text="{Binding Path=Info1}" />
</TextBlock>

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

代码语言:javascript
复制
 <TextBlock Visibility="{Binding Path=Info1, Converter={StaticResource MyConverter}}">
    Info1:<TextBlock Text="{Binding Path=Info1}" />
</TextBlock>
票数 2
EN

Stack Overflow用户

发布于 2009-12-14 23:41:18

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

例如,在DataTemplate情况下

代码语言:javascript
复制
<DataTemplate.Triggers>
    <DataTrigger Binding="{Binding Path=Info1}" Value="">
        <Setter Property="Visibility" TargetName="pnlInfo1" Value="Hidden" />
    </DataTrigger>
    <!-- and so on ... -->
</DataTemplate.Triggers>

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/759528

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档