2008-12-30 5 views
34

Ich habe eine benutzerdefinierte Vorlage für einen Expander, der in der Nähe des folgenden Codes ist. Ich hatte einige der Code ändern benutzerdefinierten Klassen zu nehmen, Bürsten, etc ..Wie ändere ich die FontFamily auf einem 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> 

Wie Sie gibt es zwei ContentPresenters sehen können. Ich möchte, dass der erste Tahoma Bold als Schriftart anstelle des Standard-Tahoma verwendet. Wie kann ich das machen?

Antwort

45

Sie müssen die FontWeight-Eigenschaft verwenden, um eine fette Schriftart anzugeben. Sie haben wahrscheinlich bemerkt, dass ContentPresenter diese Eigenschaft nicht besitzt. Sie müssen also die angefügte Eigenschaft TextBlock.FontWeight verwenden, um dem ContentPresenter mitzuteilen, dass ein darin enthaltener Text fett dargestellt werden muss.

Versuchen Sie folgendes:

+0

Das funktionierte perfekt. Danke für die schnelle Antwort –

+0

für den Fall von Auto TextBlock generiert (Bindung an Objekt) dies funktioniert nicht. Verwenden Sie stattdessen Stil in der ContentPresenter.Resource. Quelle & Kredit https://Stackoverflow.com/a/20117653/1271037 – dovid

7

ich nicht über Silverlight helfen können, aber in der neuen WPF 4 ist Textelement statt TextBlock-

Verwandte Themen