2008-12-30 8 views
34

J'ai un modèle personnalisé pour un expandeur proche du code ci-dessous. Je devais changer une partie du code pour prendre des classes personnalisées, brosses, etc ..Comment modifier la FontFamily sur un ContentPresenter?

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

Comme vous pouvez le voir, il y a deux ContentPresenters. Je voudrais que le premier utilise Tahoma Bold comme police au lieu du Tahoma par défaut. Comment puis-je faire ceci?

Répondre

45

Vous devez utiliser la propriété FontWeight pour spécifier une police en gras. Toutefois, vous avez probablement remarqué que ContentPresenter n'a pas cette propriété. Vous devez donc utiliser la propriété jointe TextBlock.FontWeight pour indiquer au ContentPresenter que tout texte à l'intérieur doit être en gras.

Essayez ceci:

+0

Cela a parfaitement fonctionné. Merci pour la réponse rapide –

+0

pour le cas de TextBlock automatique généré (liaison à l'objet) cela ne fonctionne pas. Utilisez plutôt le style dans ContentPresenter.Resource. source et crédit https://stackoverflow.com/a/20117653/1271037 – dovid

7

Je ne peux pas aider sur Silverlight, mais dans le nouveau WPF 4 est TextElement plutôt que TextBlock

Questions connexes