我正在开发一个Windows 8.1应用程序。我使用c#代码试图更改资源二元化中的值。所以我尝试了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)除外)
有什么问题吗?
发布于 2015-06-19 03:25:40
backgroundGridStyle.Setters.Add(new Setter(Grid.BackgroundProperty,new SolidColorBrush( Colors.Red)));
使用上面的代码,因为您不能直接将值赋值为string属性。
例如:
甚至我在为以下边框样式设置边框刷/corner半径/边框厚度时也出现了相同的错误:
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)));
它将解决所有这些问题。
https://stackoverflow.com/questions/29556372
复制