当文本为空时,我试图使用ControlTemplate中的触发器将自定义控件的背景设置为Visual Brush。以下是相关代码:
<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中定义笔刷,但为什么第一个绑定不正确而第二个绑定却正常工作呢?