我正在开发Windows Phone 8.1应用程序。 我使用c#代码尝试更改资源dicrionary中的值。 所以我尝试了Style.setValue方法,但它发生了错误。
var selectedEllipseColor = (Ellipse)sender;
SolidColorBrush selectedColor = (SolidColorBrush)selectedEllipseColor.Fill;
String colorString = selectedColor.Color.ToString(); // Ex) #FFFFFF
Style backgroundGridStyle = Application.Current.Resources["gridBackgroundStyle"] as Style;
// ERROR!
//backgroundGridStyle.Setters.Add(new Setter(Grid.BackgroundProperty, "red"));
// ERROR too.
backgroundGridStyle.SetValue(Grid.BackgroundProperty, selectedColor);
这是错误消息。 :灾难性故障(HRESULT异常:0x8000FFFF(E_UNEXPECTED))
有什么问题?
答案 0 :(得分:0)
backgroundGridStyle.Setters.Add(new Setter(Grid.BackgroundProperty,new SolidColorBrush( Colors.Red)));
使用上面的代码,因为你不能直接将值作为字符串赋值给color属性。
例如:
即使在为边框样式设置边框画笔/边角半径/边框粗细时也出现了同样的错误:
Style x = this.Resources["BorderStyle"] as Style;
x.Setters.Add(new Setter(Border.CornerRadiusProperty, "25"));
x.Setters.Add(new Setter(Border.BorderThicknessProperty, "10"));
x.Setters.Add(new Setter(Border.BorderBrushProperty,"Red")));
但是像这样更新代码:
Style x = this.Resources["BorderStyle"] as Style;
x.Setters.Add(new Setter(Border.CornerRadiusProperty, new CornerRadius(25)));
x.Setters.Add(new Setter(Border.BorderThicknessProperty, new Thickness(10)));
x.Setters.Add(new Setter(Border.BorderBrushProperty,new SolidColorBrush( Colors.Red)));
它将解决所有这些问题。