wpf xaml contentpresenter fontfamily

wpf - ¿Cómo cambio FontFamily en un ContentPresenter?



xaml (2)

Tengo una plantilla personalizada para un expansor que está cerca del código a continuación. Tuve que cambiar parte del código para sacar clases personalizadas, pinceles, etc.

<Style TargetType="{x:Type Expander}"> <Setter Property="HorizontalContentAlignment" Value="Stretch" /> <Setter Property="VerticalContentAlignment" Value="Top" /> <Setter Property="BorderBrush" Value="Transparent" /> <Setter Property="FontFamily" Value="Tahoma" /> <Setter Property="FontSize" Value="12" /> <Setter Property="Foreground" Value="Black" /> <Setter Property="BorderThickness" Value="1" /> <Setter Property="Margin" Value="2,0,0,0" /> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="{x:Type Expander}"> <Border x:Name="Border" SnapsToDevicePixels="true" Background="White" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Margin="0,0,0,10" Padding="0" CornerRadius="8"> <DockPanel> <Border x:Name="HeaderSite" Background="Blue" CornerRadius="8" Height="32" DockPanel.Dock="Top"> <DockPanel> <ToggleButton Foreground="White" HorizontalContentAlignment="{TemplateBinding HorizontalContentAlignment}" VerticalContentAlignment="{TemplateBinding VerticalContentAlignment}" Margin="0" MinHeight="0" MinWidth="0" Padding="6,2,6,2" IsChecked="{Binding Path=IsExpanded, Mode=TwoWay, RelativeSource={RelativeSource TemplatedParent}}" DockPanel.Dock="Left"> </ToggleButton> <ContentPresenter SnapsToDevicePixels="True" HorizontalAlignment="Left" Margin="4,0,0,0" ContentSource="Header" VerticalAlignment="Center" RecognizesAccessKey="True" /> </DockPanel> </Border> <Border x:Name="InnerBorder" Margin="0" > <ContentPresenter Focusable="false" Visibility="Collapsed" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" Margin="{TemplateBinding Padding}" x:Name="ExpandSite" VerticalAlignment="{TemplateBinding VerticalContentAlignment}" DockPanel.Dock="Bottom" /> </Border> </DockPanel> </Border> <ControlTemplate.Triggers> <Trigger Property="IsExpanded" Value="true"> <Setter Property="Margin" TargetName="InnerBorder" Value="5" /> <Setter Property="Visibility" TargetName="ExpandSite" Value="Visible" /> </Trigger> <Trigger Property="IsEnabled" Value="false"> <Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.GrayTextBrushKey}}" /> </Trigger> </ControlTemplate.Triggers> </ControlTemplate> </Setter.Value> </Setter> </Style>

Como puede ver, hay dos ContentPresenters. Me gustaría que el primero use Tahoma Bold como fuente en lugar del Tahoma predeterminado. ¿Cómo puedo hacer esto?


Debe usar la propiedad FontWeight para especificar una fuente en negrita. Sin embargo, probablemente hayas notado que ContentPresenter no tiene esa propiedad. Por lo tanto, deberá usar la propiedad adjunta TextBlock.FontWeight para decirle a ContentPresenter que cualquier texto que contenga debe estar en negrita.

Prueba esto:

<ContentPresenter TextBlock.FontFamily="Tahoma" TextBlock.FontWeight="Bold" SnapsToDevicePixels="True" HorizontalAlignment="Left" Margin="4,0,0,0" ContentSource="Header" VerticalAlignment="Center" RecognizesAccessKey="True" />


No puedo ayudar con Silverlight, pero en el nuevo WPF 4 es TextElement en lugar de TextBlock