我必须显示一个很大的属性/值列表。我的问题是并不是所有这些属性都有值,所以我不想在这种情况下显示这些属性。
使用一些代码可以更容易地理解我的问题:
<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访问父进程。您可能会有一个比这更简洁的解决方案:)
非常感谢你的帮助!
发布于 2009-04-17 09:55:35
您可以使用一个简单的转换器将外部文本块的可见性绑定到内部文本块的文本:
<TextBlock Name="outer1"
Visibility="{Binding ElementName=inner1, Path=Text, Converter={StaticResource MyConverter}}">
Info1:<TextBlock Name="inner1" Text="{Binding Path=Info1}" />
</TextBlock>或者将外部文本块的可见性直接绑定到Info1:
<TextBlock Visibility="{Binding Path=Info1, Converter={StaticResource MyConverter}}">
Info1:<TextBlock Text="{Binding Path=Info1}" />
</TextBlock>发布于 2009-12-14 23:41:18
如果在模板或样式中,可以使用触发器设置外部文本块的可见性。
例如,在DataTemplate情况下
<DataTemplate.Triggers>
<DataTrigger Binding="{Binding Path=Info1}" Value="">
<Setter Property="Visibility" TargetName="pnlInfo1" Value="Hidden" />
</DataTrigger>
<!-- and so on ... -->
</DataTemplate.Triggers>根据需要调整触发器。例如,您可以在它为null时将其隐藏,或者使用gcores建议的转换器来执行更复杂的检查。
https://stackoverflow.com/questions/759528
复制相似问题