我正在使用 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”在使用(密封)后,无法修改
我该如何解决这个问题?
最佳答案
样式只能设置一次(编译后密封),不能用代码更改
所以解决方案是
通过代码创建样式
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]
或
直接改变属性
btnCancel.FontSize=30.0;
关于c# - 更改样式中的 setter 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20575775/