none
如何设置整个应用程序的默认字体为Microsoft YaHei RRS feed

  • 问题

  • 请教,我如何在 <Application.Resources>中设置就会使整个应用程序的字体为Microsoft YaHei ?


    这样设置仅仅会使TextBlock的字体为Microsoft YaHei。
        <Style TargetType="TextBlock">
            <Setter Property="FontFamily" Value="Microsoft YaHei"></Stter>
        </Style>

    或者请教用什么办法可以实现默认情况下整个应用程序的字体为Microsoft YaHei ?

    2009年7月17日 1:22

答案

  • 设置整个Window或Page的:

    <Window FontFamily="Microsoft YaHei" FontSize="12">
    ……
    </Window>

    这样整个这个Window或Page里的所有控件中的FontFamily和FontSize属性都继承这一设置。如果在某一控件中对该控件的FontFamily或FontSize属性进行单独设置,那这一控件执行其自身的设置,不继承。

    设置整个程序的:
    <Application.Resources>
        <Style TargetType="Window">
            <Setter Property="FontFamily" Value="Microsoft YaHei"/>
            <Setter Property="FontSize" Value="12"/>
        </Style>
    </Application.Resources>
    2009年7月19日 14:45
  • 你好,

     

    Uncode在上面贴子中提供一个很好的建议.但是我想补充的是像下面这样写style并不能对app中的window起作用.

    <Application.Resources>

        <Style TargetType="Window">

            <Setter Property="FontFamily" Value="Microsoft YaHei"/>

            <Setter Property="FontSize" Value="12"/>

        </Style>

    </Application.Resources>

    根据我的经验,如果想在App.xaml中设置一个全应用程序的Window Style的话,一般有下面三种方法:

    1在每一个Window中显式加上以下code.

    Style="{StaticResource {x:Type Window}}"

    2为每一个Window实例设置style,而不是为Window.

     

    <Application.Resources>

        <Style TargetType="{x:Type local:Window1}">

            <Setter Property="Background" Value="Red"/>

        </Style>

        <Style TargetType="{x:Type local:Window2}">

            <Setter Property="Background" Value="Red"/>

        </Style>

        <!--Other window style-->

    </Application.Resources>

    3显式的用Style key.

    <Application.Resources>

        <Style TargetType="{x:Type Window}" x:Key="windowStyleKey"  >

            <Setter Property="Background" Value="Red" />

        </Style>

    </Application.Resources>

     

    下面是我已回答的MSDN上一个相似的问题:

    http://social.microsoft.com/Forums/pt-BR/wpf/thread/3059c0e4-c372-4da2-b384-28f271feef05

     

    如果还有疑问,你可以用email或是MSN联系我,欢迎交流。

    Email:v-jimz@microsoft.com

    MSN: zhoujiguo1985@live.cn

     

    谢谢


    Jim Zhou -MSFT
    2009年7月20日 8:42
    版主

全部回复

  • 设置整个Window或Page的:

    <Window FontFamily="Microsoft YaHei" FontSize="12">
    ……
    </Window>

    这样整个这个Window或Page里的所有控件中的FontFamily和FontSize属性都继承这一设置。如果在某一控件中对该控件的FontFamily或FontSize属性进行单独设置,那这一控件执行其自身的设置,不继承。

    设置整个程序的:
    <Application.Resources>
        <Style TargetType="Window">
            <Setter Property="FontFamily" Value="Microsoft YaHei"/>
            <Setter Property="FontSize" Value="12"/>
        </Style>
    </Application.Resources>
    2009年7月19日 14:45
  • 你好,

     

    Uncode在上面贴子中提供一个很好的建议.但是我想补充的是像下面这样写style并不能对app中的window起作用.

    <Application.Resources>

        <Style TargetType="Window">

            <Setter Property="FontFamily" Value="Microsoft YaHei"/>

            <Setter Property="FontSize" Value="12"/>

        </Style>

    </Application.Resources>

    根据我的经验,如果想在App.xaml中设置一个全应用程序的Window Style的话,一般有下面三种方法:

    1在每一个Window中显式加上以下code.

    Style="{StaticResource {x:Type Window}}"

    2为每一个Window实例设置style,而不是为Window.

     

    <Application.Resources>

        <Style TargetType="{x:Type local:Window1}">

            <Setter Property="Background" Value="Red"/>

        </Style>

        <Style TargetType="{x:Type local:Window2}">

            <Setter Property="Background" Value="Red"/>

        </Style>

        <!--Other window style-->

    </Application.Resources>

    3显式的用Style key.

    <Application.Resources>

        <Style TargetType="{x:Type Window}" x:Key="windowStyleKey"  >

            <Setter Property="Background" Value="Red" />

        </Style>

    </Application.Resources>

     

    下面是我已回答的MSDN上一个相似的问题:

    http://social.microsoft.com/Forums/pt-BR/wpf/thread/3059c0e4-c372-4da2-b384-28f271feef05

     

    如果还有疑问,你可以用email或是MSN联系我,欢迎交流。

    Email:v-jimz@microsoft.com

    MSN: zhoujiguo1985@live.cn

     

    谢谢


    Jim Zhou -MSFT
    2009年7月20日 8:42
    版主
  • Jim,你的方法绝对是没问题的。我一般也是加x:Key的。不过后来发现加了x:Key以后,每一个Window必须设定Style。如果不加则所有的Window全部自动应用样式了。我试过了。顺便说一下,我用的是.net3.5 SP1 + Blend中文版,其它版本不知如何。

    补充:发现在VS里必须加x:Key,只有Blend可以不加,不知为何。所以最好还是如下。
    <Application.Resources>
        <Style TargetType="Window" x:Key="Win">
            <Setter Property="FontFamily" Value="Microsoft YaHei"/>
            <Setter Property="FontSize" Value="12"/>
        </Style>
    </Application.Resources>
    <Window Style="{StaticResource Win}">
    ……
    </Window>
    • 已编辑 uncode 2009年7月21日 6:09
    2009年7月20日 11:43
  • 你好uncode

     

    Style key有隐式和显式之分,隐式的话我们引用的时候不必要加key, 显式的话我们就要加style key来引用。Blend我不太熟,如果可以的话,请加一下我的MSN方便交流(在我第一个贴子中).

     

    谢谢


    Jim Zhou -MSFT
    2009年7月21日 7:08
    版主
  • 感谢 Jim Zhou和 uncode的耐心讲解
    2009年8月5日 0:54