C# 如何将FontFamily存储为静态资源?
我正试图弄清楚如何在App.xaml中设置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
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,因为它听起来就是这样的