改变风格的设定值

Bab*_*bad 4 c# wpf xaml styles

我在WPF编程(c#).我试图在一套风格中改变价值.

我的风格是:

<Style TargetType="Control" x:Key="st">
    <Setter Property="FontFamily" Value="Tahoma"/>
    <Setter Property="FontSize" Value="14"/>
</Style>
Run Code Online (Sandbox Code Playgroud)

我在一个按钮中使用它:

<Button x:Name="btnCancel" Style="{StaticResource st}" Content="??????" Canvas.Left="30" Canvas.Top="18" Width="139" Height="53" FontFamily="2  badr" FlowDirection="LeftToRight" Click="btnCancel_Click_1" />
Run Code Online (Sandbox Code Playgroud)

而我试图做的是这段代码:

Style style = new Style();
style = (Style) Resources["st"];
Setter setter =(Setter) style.Setters[1];
setter.Value = 30;
Run Code Online (Sandbox Code Playgroud)

设置字体大小后30我得到这个错误?

在使用(密封)"SetterCollectionBase"之后,无法修改它

我怎么解决这个问题?

sed*_*dik 8

样式只能设置一次(编译后密封),不能用代码更改

所以解决方案是

  1. 通过代码创建样式

        Style st = new Style(typeof(System.Windows.Controls.Control));
        st.Setters.Add(new Setter(Control.FontFamilyProperty, new FontFamily("Tahoma")));
        st.Setters.Add(new Setter(Control.FontSizeProperty, 14.0));
    
    Run Code Online (Sandbox Code Playgroud)

以后你可以改变它

        st.Setters.OfType<Setter>().FirstOrDefault(X => X.Property == Control.FontSizeProperty).Value = 30.0;//safer than Setters[1]
Run Code Online (Sandbox Code Playgroud)

要么

  1. 直接更改属性

    btnCancel.FontSize=30.0;
    
    Run Code Online (Sandbox Code Playgroud)