C# 从代码隐藏更改应用程序资源中的FontSize
对于WPF TextBox控件,我在我的app.XAML中使用XAML样式设置FontSize,如下所示:C# 从代码隐藏更改应用程序资源中的FontSize,c#,wpf,resourcedictionary,wpf-style,C#,Wpf,Resourcedictionary,Wpf Style,对于WPF TextBox控件,我在我的app.XAML中使用XAML样式设置FontSize,如下所示: <System:Double x:Key="FontSizeVal">12</System:Double> <Style TargetType="{x:Type TextBlock}"> <Setter Property="FontSize" Value="{DynamicResource FontSizeVal}"/> </
<System:Double x:Key="FontSizeVal">12</System:Double>
<Style TargetType="{x:Type TextBlock}">
<Setter Property="FontSize" Value="{DynamicResource FontSizeVal}"/>
</Style>
如何在代码中而不是在XAML中设置FontSizeVal
更新:我的问题解决了,我改变了: 10 到 10
tnx对@ash的总结
10
literal在这里被解释为int
。使用10.0
这是double
以下是一些调查细节 Q:什么是
App.Current.Resources[“FontSizeVal”]=10代码>做什么
答:它用int资源替换double资源。它本身是安全操作的
Q:为什么InvalidCastException
答:由于DynamicSource行为,TextBlock尝试将int
value资源应用于FontSize,但是!FontSize需要双倍的
如果您试图通过DP属性将int
值设置为FontSize
myTextBlock.SetValue(TextElement.FontSizeProperty, 10);
它抛出“ArgumentException”:10不是“FontSize”属性的有效值
设置双重工程
myTextBlock.SetValue(TextElement.FontSizeProperty, 10.0);
最后通过属性包装器设置int
:
myTextBlock.FontSize = 10;
它之所以有效,是因为存在从int
到double
的隐式转换,“不工作”并不能解释程序中发生了什么。它是否引发运行时异常?或者UI中有一个文本块,但它的大小仍然相同?还是别的?请澄清System.InvalidCastException:“指定的强制转换无效。”10
literal在此解释为int
。试试10.0
tnx这对我很有用。
myTextBlock.FontSize = 10;