WP8.1 在 c# 中设置背景 属性 样式 setter

WP8.1 Setting background property Style setter in c#

我正在开发 Windows Phone 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))

有什么问题?

backgroundGridStyle.Setters.Add(new Setter(Grid.BackgroundProperty,new SolidColorBrush( Colors.Red)));

使用上面的代码,因为你不能直接将值作为字符串分配给颜色属性。

例如:

即使我在为以下边框样式设置边框刷/角 radius/border 厚度时也遇到了同样的错误:

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)));

它将解决所有这些问题。