gpt4 book ai didi

c# - 更改样式中的 setter 值

转载 作者:太空狗 更新时间:2023-10-30 00:24:55 27 4
gpt4 key购买 nike

我正在使用 WPF(c#) 进行编程。我正在尝试改变风格的二传手的值(value)。

我的风格是:

<Style TargetType="Control" x:Key="st">
<Setter Property="FontFamily" Value="Tahoma"/>
<Setter Property="FontSize" Value="14"/>
</Style>

我在按钮中使用它:

<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" />

我尝试做的是这段代码:

Style style = new Style();
style = (Style) Resources["st"];
Setter setter =(Setter) style.Setters[1];
setter.Value = 30;

将字体大小设置为 30 后出现此错误?

“SetterCollectionBase”在使用(密封)后,无法修改

我该如何解决这个问题?

最佳答案

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

所以解决方案是

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

稍后你可以改变它

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

  1. 直接改变属性

    btnCancel.FontSize=30.0;

关于c# - 更改样式中的 setter 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20575775/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com