【问题标题】:Is it possible to set FontSize for all controls at once? [duplicate]是否可以一次为所有控件设置 FontSize? [复制]
【发布时间】:2019-02-05 06:26:43
【问题描述】:

我需要立即为我的 wpf-layout 中的所有控件设置 FontSize 属性。 我的意思是我不想为标签设置它,然后为 chechboxes 等设置它。我想为所有支持此属性的控件设置它。

因此,在我的模块的“设置”中,我有按钮和其余控件的字体大小值。对于按钮,我以这种方式设置字体大小:

<Style TargetType="Button">
    <Setter Property="FontSize" Value="{Binding Source={x:Static properties:Settings.Default}, Path=ButtonFontSize}" />
</Style>

现在我需要为其余控件设置 FontSize。

【问题讨论】:

  • 不需要单独设置所有控件类型的FontSize。只需设置 Window 的 FontSize 属性。由于属性值继承,该值会自动传递给所有子元素。
  • 如果您的问题已回答或已关闭,请不要更改。而是提出一个新问题。
  • 不行,我已经试过把这个
  • 直接设置Window的FontSize怎么样:&lt;Window ... FontSize="25"&gt;
  • 我的应用是 MVVM 应用,基于 Josh Smith MVVM 示例。它有主窗口,其余的“窗口”是用户控件,由这个主窗口托管。而且我需要让用户可以为整个“窗口”选择字体大小。我需要找到在某个地方定义它的方法,因为在每个视图中编写相同的代码是疯狂的(我猜)。

标签: c# wpf


【解决方案1】:

我猜你可以在窗口上设置它,因为它应该从父控件继承。

<Style TargetType="{x:Type Window}">
     <Setter Property="FontSize" Value="24" />
</Style>

【讨论】:

    【解决方案2】:

    复制自this answer


    我会这样做:

    <Window.Resources>
            <Style TargetType="{x:Type Control}" x:Key="baseStyle">
                <Setter Property="FontSize" Value="100" />
            </Style>
            <Style TargetType="{x:Type Button}" BasedOn="{StaticResource baseStyle}"></Style>
            <Style TargetType="{x:Type Label}" BasedOn="{StaticResource baseStyle}"></Style>
            <Style TargetType="{x:Type TextBox}" BasedOn="{StaticResource baseStyle}"></Style>
            <Style TargetType="{x:Type ListView}" BasedOn="{StaticResource baseStyle}"></Style>
            <!-- ComboBox, RadioButton, CheckBox, etc... -->
    </Window.Resources>
    

    【讨论】:

    • 看起来不错,但是如果我有几个视图并且需要为所有视图应用此字体设置怎么办?我可以做一些“父视图”,把你的代码放在那里,然后在其余的布局中继承它吗?
    • 除此之外,这是错误的做法。查看重复问题的其他答案。
    【解决方案3】:

    如果你想为一个特定提示的所有控件设置字体大小,你可以使用这个

    <Window.Resources>
      <Style TargetType="{x:Type TextBox}">
        <Setter Property="FontSize" Value="24" />
      </Style>      
      <Style TargetType="{x:Type Textblock}">
        <Setter Property="FontSize" Value="20" />
      </Style>
    </Window.Resources>
    

    如果你有很多样式并且想要保持变量可编辑,那么在上面定义它是有意义的:

    <Window.Resources>
      <System:Double x:Key="stdFontSize">15</System:Double>
    
      <Style TargetType="{x:Type TextBox}">
        <Setter Property="FontSize" Value="stdFontSize" />
      </Style>      
      <Style TargetType="{x:Type Textblock}">
        <Setter Property="FontSize" Value="stdFontSize" />
      </Style>
    </Window.Resources>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-19
      • 2015-06-14
      • 2023-03-21
      • 2016-12-22
      • 1970-01-01
      相关资源
      最近更新 更多