3

テキストが空の場合、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 番目のバインディングは正しく機能するのに、最初のバインディングは機能しないのはなぜですか?

4

1 に答える 1