目前我使用fontsize资源作为
<sys:Double x:Key="FontSize13">13</sys:Double>
<sys:Double x:Key="FontSize12">12</sys:Double>
<sys:Double x:Key="FontSize11">11</sys:Double>
并使用
<Setter Property="FontSize"
Value="{DynamicResource FontSize13}" />
如何将FontSize设置为10pt而不是像素?
答案 0 :(得分:8)
类型转换在编译时由XAML编译器发生,特别是响应FontSizeConverter
属性的FontSize
,因此我们遇到了使转换器运行的基本问题。但是我们可以创建一个帮助标记扩展来完成这项工作。
以下是XAML的样子:
<Grid>
<Grid.Resources>
<local:FontSize Size="20" x:Key="TwentyPixels"/>
<local:FontSize Size="11pt" x:Key="ElevenPoint"/>
</Grid.Resources>
<StackPanel>
<TextBlock Text="Sample text" FontSize="{StaticResource TwentyPixels}"/>
<TextBlock Text="Sample text" FontSize="{StaticResource ElevenPoint}"/>
</StackPanel>
</Grid>
这是标记扩展名:
public class FontSizeExtension : MarkupExtension
{
[TypeConverter(typeof(FontSizeConverter))]
public double Size { get; set; }
public override object ProvideValue(IServiceProvider serviceProvider)
{
return Size;
}
}
答案 1 :(得分:0)
只需在数字和&#34; pt&#34;之间使用空格。例如:
<Style TargetType="TextBlock">
<Setter Property="FontFamily" Value="Segoe UI"/>
<Setter Property="FontSize" Value="11 pt"/>
</Style>
答案 2 :(得分:-2)
刚刚将资源从Double更改为String并包含单位说明符
<sys:String x:Key="FontSize13">13pt</sys:String>