如何使用触发器更改另一个文件中引用的WPF样式中的属性?

时间:2012-04-10 13:56:36

标签: wpf xaml user-controls styles drawing

我在一个文件中声明了DrawingBrush,在另一个文件中声明了一个Style。该样式使用DrawingBrush作为背景填充。现在,在UserControl XAML文件中,我通过绑定引用了Style。

Style="{DynamicResource myCustomStyle}"

这是棘手的部分。我想使用DataTrigger更改DrawingBrush内路径的填充颜色。现在,由于Style存在于一个文件中而DrawingBrush存在于另一个文件中,我将如何实现此目标?

我希望避免为我需要的每种颜色创建多个DrawingBrush es。我希望它是动态的和可重复使用的。

1 个答案:

答案 0 :(得分:0)

看起来无法做到这一点。我已经尝试将DrawingBrush移动到ResourceDictionary,并且一旦完成,数据绑定就会抛出错误。如果我采取以下XAML

<Rectangle x:Name="IconBrush" local:Helper.Colour="Black">
    <Rectangle.Fill>
        <DrawingBrush  Stretch="Uniform">
            <DrawingBrush.Drawing>
                <DrawingGroup>
                    <DrawingGroup.Children>
                        <GeometryDrawing Geometry="M1,1 L9.5,1 L9.5,13 L1,13 z M10.5,10.4 L13.15,13 M11.6,7.675 C11.6,9.5113467 10.066575,11 8.175,11 C6.2834248,11 4.75,9.5113467 4.75,7.675 C4.75,5.8386532 6.2834248,4.35 8.175,4.35 C10.066575,4.35 11.6,5.8386532 11.6,7.675 z">
                            <GeometryDrawing.Pen>
                                <Pen Thickness="1"
                                     Brush="{Binding Path=(local:Helper.Colour), RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Rectangle}}}" />
                            </GeometryDrawing.Pen>
                        </GeometryDrawing>
                    </DrawingGroup.Children>
                </DrawingGroup>
            </DrawingBrush.Drawing>
        </DrawingBrush>
    </Rectangle.Fill>
</Rectangle>

然后将其更改为此,然后停止工作。不知道为什么不能这样做才能利用可重用的资源。

 <Rectangle x:Name="IconBrush" pm4uc:Helper.Colour="Black"
            Fill="{DynamicResource NewIconBrush}" />

我猜WPF无法解析在资源字典中查找祖先或数据绑定。