7

App.xamlでFontFamilyを設定して、必要な場所にそのスタイルを宣言的に適用できるようにする方法を見つけようとしています。私は次のResourceDictionaryようなものを適用できます:

<System:Double x:Key="SmallTextSize">10</System:Double>

私がやりたいのは次のようなものです。

<FontFamily x:Key="MainFont">Wingdings</FontFamily>

しかし、私が仕事に取り掛かることができるのは、ターゲットを必要とする暗黙のスタイルと、使用したいフォントの複数の宣言だけです。最終的に得たスタイルを、任意のコントロールのFontFamilyプロパティに適用できるようにする必要があります。

これが私が現在来ることができる最も近いものです:

<System:String x:Key="MainFont">Wingdings</System:String>
<Style TargetType="UserControl">
      <Setter Property="FontFamily" Value="{StaticResource MainFont}"></Setter>
</Style>

この実装は、MainFontが文字列ではなくFontFamilyであることを想定しているため、次のようなものでは機能しません。

<TextBlock Text="{Binding}" Margin="0,0,0,4" FontWeight="Normal" FontFamily="{StaticResource MainFont}" FontSize="14.667" />

これをどのように処理すればよいですか?ありがとう!

4

1 に答える 1

14

私がしていることは、これを正確に理解しているのかどうかはわかりません。

<FontFamily x:Key="MainFont">WingDings</FontFamily>

あなたが話しているなら、それをそれぞれに宣言する必要なしに複数のインスタンスに適用するなら、私はただ好きです。

<Object>
   <Object.Resources>
      <Style TargetType="TextBlock" BasedOn="{StaticResource YourDefaultTextBlockStyleToInheritOtherProperties}">
         <Setter Property="FontFamily" Value="{StaticResource MainFont}"/>
      </Style>
   </Object.Resources>

   <!-- Your FontFamily automatically gets inherited to all children of the object 
        whether your object is say a Grid, or StackPanel, 
        or even an entire UserControl -->    
   <TextBlock Text="ABCDEFG"/>
   <TextBlock Text="12345"/>
   <TextBlock Text="!()*&@#"/>

</Object>
于 2013-01-17T16:56:24.420 に答える