在XAML:如何改變資源字典顏色在運行時
<ResourceDictionary>
<Color x:Key="BrushColor1">Red</Color>
<Color x:Key="BrushColor2">Black</Color>
<LinearGradientBrush x:Key="GradientBrush1" StartPoint="0,0.5" EndPoint="1,0.5">
<GradientStop Color="{DynamicResource BrushColor2}" Offset="0" />
<GradientStop Color="{DynamicResource BrushColor1}" Offset="1" />
</LinearGradientBrush>
</ResourceDictionary>
在C#:
public void CreateTestRect()
{
Rectangle exampleRectangle = new Rectangle();
exampleRectangle.Width = 150;
exampleRectangle.Height = 150;
exampleRectangle.StrokeThickness = 4;
exampleRectangle.Margin = new Thickness(350);
ResourceDictionary resources = this.Resources;
resources["BrushColor1"] = Colors.Pink;
resources["BrushColor2"] = Colors.RoyalBlue;
Brush brush =(Brush)this.FindResource("GradientBrush1");
exampleRectangle.Fill = brush;
canvas.Children.Insert(0, exampleRectangle);
}
如何改變在C#運行時的色彩元素。 LinearGradientBrush應該動態更改?
我願做這樣的事情:
(Color)(this.FindResource("BrushColor1")) = Colors.Pink;
,但我失敗了。
我試過了,但仍然無法改變畫布上的顏色。無論如何,謝謝你。 – dongx
@XiaoruiDong這不起作用 - 你需要找到存儲它的實際資源字典來改變它。 –
我剛解決了它。看起來只有** LinearGradientBrush **不支持** DynamicResource **。其餘的畫筆如** SolidColorBrush **支持它。 – dongx