我有一个这样的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的背景,但是我可以更改条纹的Color动态吗?
例如:当我有一个将Background属性绑定到此VisualBrush的网格,而现在它的条纹线是黑色时,希望当我按下按钮时,该网格的背景条纹可以变成“黄色”。
我尝试了很多方法,但是没有用。请给我一些建议。谢谢。
答案 0 :(得分:1)
Dynamicresource仅在顶级对象更改时“通知”。
这是一种哈希表,当您设置值(关闭整个对象)时,UI会选择该值。
假设更改整个笔刷不适合您。
您可以绑定属性,但必须通知更改。表示实现inotifypropertychanged的类中的属性或依赖项属性。
对于依赖项属性,您可以在可视笔刷上使用附加属性并绑定到该属性。
或者您可以使用样式进行设置,提供默认值并使用触发器或数据触发或可视状态来更改属性(颜色)。当然,这是控件模板上类似鼠标悬停和禁用样式的工作方式。