只要 TextBlock 有一个空字符串值,底部的代码就会使 DockPanel Visibility=Collapsed ,这就是我想要的。但是,我偶然发生了这件事,我想知道为什么在 TextBlock 中设置 DockPanel.Visibility 附加属性会影响 DockPanel。
我知道 DockPanel.Dock 是一个附加属性,您可以直接在元素中设置,例如
<TextBlock DockPanel.Dock="Top"/>
..但你不能设置
<TextBlock DockPanel.Visibility="Collapsed"/>
..以同样的方式。
那么 DockPanel 是如何知道为 DockPanel.Visibility 查询子元素的,或者父元素是否总是查询子元素以获取所有附加属性并在未在本地设置值时使用这些属性?我的印象是只有某些附加属性以这种方式使用(例如 DockPanel.Dock)。
此外,还有什么其他方法可以获得相同的结果(例如,使用在 DockPanel 样式中设置的触发器 - 问题似乎是 errorTextBlock 名称不在范围内)
<DockPanel x:Key="errorDisplay" LastChildFill="False">
<Border Background="Red" DockPanel.Dock="Top" BorderBrush="Black" BorderThickness="1">
<TextBlock Padding="4" x:Name="errorTextBlock">
<TextBlock.Style>
<Style>
<Style.Triggers>
<Trigger Property="TextBlock.Text" Value="">
<Setter Property="DockPanel.Visibility" Value="Collapsed"/>
</Trigger>
</Style.Triggers>
</Style>
</TextBlock.Style>
</TextBlock>
</Border>
</DockPanel>