为什么我要VisualBrush
使用以下代码在我的按钮中渲染一个可爱的图像:
<Button>
<Rectangle Width="28" Height="28">
<Rectangle.Fill>
<VisualBrush Stretch="Fill" Visual="{StaticResource lovely_image}" />
</Rectangle.Fill>
</Rectangle>
</Button>
但是这段代码什么也不渲染?:
<Button>
<Rectangle Width="28" Height="28">
<Rectangle.Style>
<Style TargetType="{x:Type Rectangle}">
<Setter Property="Fill">
<Setter.Value>
<VisualBrush Stretch="Fill" Visual="{StaticResource lovely_image}" />
</Setter.Value>
</Setter>
</Style>
</Rectangle.Style>
</Rectangle>
</Button>
有趣的是,如果我用 a 替换VisualBrush
第二个示例中的SolidColorBrush
,则SolidColorBrush
渲染。
(我为什么要这样做?我正在尝试使用 DataTriggers 根据我的 ViewModel 中的值交换图标。)
更新
所以看起来这段代码工作得很好。我的问题实际上是我的资源定义我的视觉效果的方式有些奇怪。视觉对象使用了从引用程序集加载的画笔动态资源。这适用于上面的第一个示例,但由于某种原因不适用于第二个示例。我刚刚将画笔复制到我的项目程序集和中提琴中的资源中!,我lovely_image
的被渲染了。