我可以将动态资源的属性设置为动态资源吗?更改属性资源时,父资源也会更改吗?

时间:2019-04-29 10:22:30

标签: wpf dynamicresource visualbrush

我有一个这样的VisulBrush:

<VisualBrush
    x:Key="visualBrush"
    TileMode="Tile"
    Viewbox="0,0,5 5"
    ViewboxUnits="Absolute"
    Viewport="0,0,5,5"
    ViewportUnits="Absolute">
    <VisualBrush.Visual>
        <Path
            Data="M 0 5 L 5 0 M -2 2 L 2 -2 M 3 7 L 7 3"
            RenderOptions.EdgeMode="Aliased"
            Stroke="Black"
            StrokeEndLineCap="Square" />
    </VisualBrush.Visual>
</VisualBrush>

您可以看到此visualBrush创建了带状线。并且我将带状线的颜色设置为“黑色”,现在看起来像这样:

enter image description here

现在我可以用此VisualBrush绑定任何UIElement的背景,但是我可以更改条纹的Color动态吗?

例如:当我有一个将Background属性绑定到此VisualBrush的网格,而现在它的条纹线是黑色时,希望当我按下按钮时,该网格的背景条纹可以变成“黄色”。

我尝试了很多方法,但是没有用。请给我一些建议。谢谢。

1 个答案:

答案 0 :(得分:1)

Dynamicresource仅在顶级对象更改时“通知”。

这是一种哈希表,当您设置值(关闭整个对象)时,UI会选择该值。

假设更改整个笔刷不适合您。

您可以绑定属性,但必须通知更改。表示实现inotifypropertychanged的类中的属性或依赖项属性。

对于依赖项属性,您可以在可视笔刷上使用附加属性并绑定到该属性。

或者您可以使用样式进行设置,提供默认值并使用触发器或数据触发或可视状态来更改属性(颜色)。当然,这是控件模板上类似鼠标悬停和禁用样式的工作方式。