Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何将FontFamily存储为静态资源?_C#_Silverlight_Xaml - Fatal编程技术网

C# 如何将FontFamily存储为静态资源?

C# 如何将FontFamily存储为静态资源?,c#,silverlight,xaml,C#,Silverlight,Xaml,我正试图弄清楚如何在App.xaml中设置FontFamily,这样我就可以在任何需要的地方声明性地应用该样式。 在ResourceDictionary中,我可以应用如下内容: <System:Double x:Key="SmallTextSize">10</System:Double> <FontFamily x:Key="MainFont">Wingdings</FontFamily> 10 我想做的是: <System:Doubl

我正试图弄清楚如何在App.xaml中设置FontFamily,这样我就可以在任何需要的地方声明性地应用该样式。 在
ResourceDictionary
中,我可以应用如下内容:

<System:Double x:Key="SmallTextSize">10</System:Double>
<FontFamily x:Key="MainFont">Wingdings</FontFamily>
10
我想做的是:

<System:Double x:Key="SmallTextSize">10</System:Double>
<FontFamily x:Key="MainFont">Wingdings</FontFamily>
Wingdings
但是,我唯一能做的就是使用隐式样式,它需要一个目标和我想要使用的字体的多个声明。我需要能够将最终使用的样式应用于任何控件的FontFamily属性

这是我目前能到达的最近的地方:

<System:String x:Key="MainFont">Wingdings</System:String>
<Style TargetType="UserControl">
      <Setter Property="FontFamily" Value="{StaticResource MainFont}"></Setter>
</Style>
Wingdings
此实现不适用于以下内容,因为它希望MainFont是FontFamily,而不是字符串:

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


我该怎么处理?谢谢

我不确定我是否完全理解这一点,因为我所做的是

<FontFamily x:Key="MainFont">WingDings</FontFamily>
WingDings
如果你说的是将其应用于多个实例,而不必向每个实例声明,那么我只想:

<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>


如果找不到更合适的答案,这里有一个可能的解决方法:使用附加的依赖项属性设置
FontFamily
。然后你会得到这样的结果:
。谢谢,但这与我想要的正好相反。我试图在一个非常大的Silverlight应用程序中整合样式,因此在该级别应用样式将意味着数千次编辑。也许我遗漏了一些内容,但如果您要像上面的示例中那样设置字体,那就是
FontFamily=“{StaticResource MainFont}”
,然后它将需要完全相同数量的编辑。不,这是一种隐式样式,意味着每种类型的对象都有一个设置,而不是每种对象。你是说
?您也可以在隐式样式中应用附加的属性。我想我的困惑来自顶部声明,它给了我一个警告,关于“FontFamily”没有默认构造函数,但显然这是可行的……没有默认构造函数?哈哈,嗯,什么?把它贴在这里,我们会帮你整理好的。好吧,所以我的App.xaml中的
Wingdings
给了我一个小警告,说“没有找到默认构造函数”,但是,在看到你发布的内容后,我试着在一个样式上使用它,瞧,它成功了。想想看,不知道为什么VS2012会给我这个警告。啊,VS2012,我还没来得及检查它不可避免的缺点,如果它成为一个问题,我就在msconnect上安装bug,因为它听起来就是这样的