下部のコードは、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>