xaml 样式有没有办法将字体大小指定为 5 个值之一?

Posted

技术标签:

【中文标题】xaml 样式有没有办法将字体大小指定为 5 个值之一?【英文标题】:xaml styles Is there a way to specify fontsize to one of 5 values? 【发布时间】:2021-08-13 17:36:52 【问题描述】:

我希望能够支持 5 种尺寸, 非常小,小,正常,大,非常大。

有没有一种聪明的方法来处理样式?

我在哪里定义了小?

我知道我可以只写 18,但我可能想稍后缩放字体...

【问题讨论】:

是的,在您的资源中并将其命名为 x:Key="Small"。 好的,有道理,但是如何添加一个名为 small 的 int... 可能很简单 FontSize 是 System.Double 类型:<system:Double x:Key="Small" >18</system:Double> 如果你将它添加到 Application.Resouces 它将在你的整个应用程序中可用 什么样的问题? System.Double 也存在于 .Net 5 中docs.microsoft.com/en-us/dotnet/api/system.double?view=net-5.0 【参考方案1】:

这是一个完整的 .Net 5 示例,其中资源位于 MainWindow 中。

<Window x:Class="WpfNet5.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    xmlns:local="clr-namespace:WpfNet5"
    xmlns:system="clr-namespace:System;assembly=System.Runtime"
    mc:Ignorable="d"
    Title="MainWindow" Height="450" Width="800">
<Window.Resources>
    <system:Double x:Key="VerySmall">12</system:Double>
    <system:Double x:Key="Small">18</system:Double>
    <system:Double x:Key="Medium">22</system:Double>
    <system:Double x:Key="Large">26</system:Double>
</Window.Resources>

  <Grid>
      <StackPanel >
          <TextBlock Text="Very small" FontSize="DynamicResource VerySmall"/>
          <TextBlock Text="Small" FontSize="DynamicResource Small"/>
          <TextBlock Text="Medium" FontSize="DynamicResource Medium"/>
          <TextBlock Text="Large" FontSize="DynamicResource Large"/>
      </StackPanel>
  </Grid>
</Window>

它在运行时的样子:

【讨论】:

谢谢,。这正是我正在寻找的东西,而我的麻烦非常简单。我写了

以上是关于xaml 样式有没有办法将字体大小指定为 5 个值之一?的主要内容,如果未能解决你的问题,请参考以下文章

css中有没有办法清除所有字体系列+字体大小样式声明?

Window 的 WPF 全局样式

无论字体系列或字体大小如何,有没有办法使文本垂直居中?

使用特定动态类型大小的字体

如何更改 Swing GTK LookAndFeel 中的默认字体大小?

如何在不知道小部件的字体系列/大小的情况下更改小部件的字体样式?