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

时间:2015-04-10 08:07:08

标签: windows-phone-8.1

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

有什么问题?

1 个答案:

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

它将解决所有这些问题。

相关问题