Question

J'ai un modèle personnalisé pour un expandeur qui est proche du code ci-dessous. J'ai dû modifier une partie du code pour supprimer des classes, des pinceaux, etc. personnalisés.

<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 de Tahoma par défaut. Comment puis-je faire cela?

Était-ce utile?

La solution

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

Essayez ceci:

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

Autres conseils

Je ne peux pas vous aider à propos de Silverlight, mais dans le nouveau WPF 4, il s'agit de TextElement plutôt que de TextBlock

.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top