您可以在主题表中定义一个字符串以用作x:键值吗?

时间:2012-03-16 19:11:14

标签: wpf themes

我正在玩主题,看到你可以定义一大堆从对象派生的东西,或者与类的类型相关联...... SolidBrushColor,Button,TextBox等。

然后您可以应用x:Key =“something”然后将其绑定到样式中,例如

<Setter Property="Foreground" Value="{StaticResource SomeSolidBrushColor}" />

所以,我的问题是这个。你可以做同样的事情,但是你想要经常使用“字符串”......例如,要在所有控件上显式使用的字体名称... Button,Label,TextBox,CheckBox等等所以你可以拥有一个值为“Arial”,“Tahoma”,“Wingdings”的字符串,然后在实际控件的每个样式中,您可以执行类似

的操作
<Setter Property="FontFamily" Value="{StaticResource MyCommonFontName}" />

同样,该值可以表示用于常见边距,边框等内容的字符串。

1 个答案:

答案 0 :(得分:1)

您不能将字符串资源用于字体,因为它是字符串而不是FontFamily对象:

<Window x:Class="WpfApplication4.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="clr-namespace:WpfApplication4"
    xmlns:media="clr-namespace:System.Windows.Media;assembly=PresentationCore"
    xmlns:sys="clr-namespace:System;assembly=mscorlib"
    Title="MainWindow" Height="350" Width="525">
<Window.Resources>
    <media:FontFamily x:Key="Font">Stencil</media:FontFamily>
    <Style TargetType="{x:Type Button}">
        <Setter Property="FontFamily" Value="{StaticResource Font}"/>
    </Style>
</Window.Resources>
<StackPanel>
    <Button>hello</Button>
</StackPanel>