-1

我有一个这样的 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创建了条形线。我将条形线的颜色设置为“黑色”,现在看起来像这样:

在此处输入图像描述

现在我可以用这个 VisualBrush 绑定任何 UIElement 的背景。但是我可以改变条纹线的颜色动态吗?

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

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

4

1 回答 1

1

Dynamicresource 只会“通知”顶级对象的变化。

这是一种哈希表,当您设置值(切换出整个对象)时,UI 会选择它。

假设更换整个刷子不适合您。

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

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

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

于 2019-04-29T10:45:18.283 回答