【问题标题】:How can I change the properties within a WPF style referenced in another file using a trigger?如何使用触发器更改另一个文件中引用的 WPF 样式中的属性?
【发布时间】:2012-04-22 19:53:27
【问题描述】:

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

Style="{DynamicResource myCustomStyle}"

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

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

【问题讨论】:

    标签: wpf xaml user-controls styles drawing


    【解决方案1】:

    这似乎无法完成。我已经尝试将 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 无法解决在资源字典中查找祖先或数据绑定的问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-11-10
      • 2011-01-30
      • 2011-08-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多