【问题标题】:WP8.1 Setting background property Style setter in c#WP8.1 在 c# 中设置背景属性样式设置器
【发布时间】:2015-06-19 19:51:31
【问题描述】:

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

有什么问题?

【问题讨论】:

    标签: windows-phone-8.1


    【解决方案1】:
    backgroundGridStyle.Setters.Add(new Setter(Grid.BackgroundProperty,new SolidColorBrush( Colors.Red)));
    

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

    例如:

    即使我在为以下边框样式设置边框画笔/角半径/边框粗细时也遇到了同样的错误:

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

    它将解决所有这些问题。

    【讨论】:

    • 一些带有解释的例子会很棒。
    猜你喜欢
    • 2019-04-07
    • 2012-09-05
    • 2016-07-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多