如果我们使用StaticResource或DynamicResource,如何在pt中设置FontSize?

Kis*_*mar 2 wpf

目前我正在使用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>
Run Code Online (Sandbox Code Playgroud)

并使用as

        <Setter Property="FontSize"
            Value="{DynamicResource FontSize13}" />
Run Code Online (Sandbox Code Playgroud)

如何将FontSize设置为10pt而不是像素?

Ric*_*key 9

类型转换在编译时由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>
Run Code Online (Sandbox Code Playgroud)

这是标记扩展:

public class FontSizeExtension : MarkupExtension
{
    [TypeConverter(typeof(FontSizeConverter))]
    public double Size { get; set; }

    public override object ProvideValue(IServiceProvider serviceProvider)
    {
        return Size;
    }
}
Run Code Online (Sandbox Code Playgroud)