テキストが空の場合、ControlTemplate のトリガーを使用してカスタム コントロールの背景をビジュアル ブラシに設定しようとしています。関連するコードを次に示します。
<ControlTemplate.Triggers>
<Trigger Property="Text" Value="">
<Setter TargetName="MyBorder" Property="Background">
<Setter.Value>
<VisualBrush Opacity="0.4" Stretch="None" TileMode="None">
<VisualBrush.Visual>
<TextBlock Text="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=BackgroundText}" />
</VisualBrush.Visual>
</VisualBrush>
</Setter.Value>
</Setter>
</Trigger>
</ControlTemplate.Triggers>
ただし、テキストが空の場合、ビジュアル ブラシは適用されません。ただし、ビジュアル ブラシをコードで作成し、それを依存関係プロパティとして公開すると、次のコードは機能します。
<ControlTemplate.Triggers>
<Trigger Property="Text" Value="">
<Setter TargetName="MyBorder" Property="Background" Value="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=BackgroundBrush}" />
</Setter>
</Trigger>
</ControlTemplate.Triggers>
ただし、XAML でブラシを定義したいと思います。2 番目のバインディングは正しく機能するのに、最初のバインディングは機能しないのはなぜですか?