2011-05-14 1 views
19

Par exemple, remarquez que le texte ne se trouve pas tout à fait au centre vertical de la zone de liste déroulante.Comment puis-je centrer le contenu d'une ComboBox verticalement?

enter image description here

Voici mon XAML:

<Window x:Class="_24HoursBook.MainWindow" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     Title="MainWindow" Height="450" Width="350" MinHeight="450" MinWidth="350"> 


    <Grid ShowGridLines="True"> 
     <Grid.RowDefinitions> 
      <RowDefinition Height="0.15*" /> 
      <RowDefinition /> 
     </Grid.RowDefinitions> 
     <Image Grid.Row="0" Stretch="Fill" Source="Image/topBarBg.png" /> 
     <StackPanel Orientation="Horizontal" Grid.Row="0">    
      <TextBlock Text="Platform" 
         Foreground="White" 
         FontFamily="Georgia" 
         FontSize="15" 
         Margin="10" 
         HorizontalAlignment="Center" 
         VerticalAlignment="Center"/> 
      <ComboBox x:Name="cmbPlatform" 
         Margin="10" 
         FontFamily="Georgia" 
         FontSize="15" 
         MinHeight="30" 
         MinWidth="140" 
         VerticalAlignment="Center"> 
       <ComboBoxItem>All Platforms</ComboBoxItem> 
       <ComboBoxItem>Playstation 3</ComboBoxItem> 
       <ComboBoxItem>XBox 360</ComboBoxItem> 
       <ComboBoxItem>Wii</ComboBoxItem> 
       <ComboBoxItem>PSP</ComboBoxItem> 
       <ComboBoxItem>DS</ComboBoxItem> 
      </ComboBox>    
     </StackPanel> 
     <Image Grid.Row="0" Source="Image/about.png" 
       Height="16" HorizontalAlignment="Right" 
       VerticalAlignment="Center" 
       Margin="0 0 10 0" /> 

     <ListView Grid.Row="1" Background="#343434"> 

     </ListView> 
    </Grid> 
</Window> 

Je suis un peu nouveau pour WPF, et je ne l'ai jamais vraiment fait quoi que ce soit du début à la fin avec elle. J'apprécierais aussi des conseils sur l'amélioration de certaines erreurs flagrantes de débutant que vous pourriez attraper.

Répondre

40

Ajoutez VerticalContentAlignment="Center" à votre liste déroulante.

+0

Je veux afficher les éléments de la liste de combobox horizontalement centre – Meer

2

Vous devez jouer avec elle, mais si je devais deviner:

<ComboBox x:Name="cmbPlatform" 
        Margin="10" 
        FontFamily="Georgia" 
        FontSize="15" 
        MinHeight="30" 
        MinWidth="140" 
        VerticalAlignment="Center" 
        VerticalContentAlignment="Center"> 

Essayez de changer le MinHeight="30" à un plus petit nombre. Il se peut que vous fassiez la boîte plus grande que le texte. Le texte est centré sur la ligne mais la boîte est plus grande.

+0

Ok, la combobox est centrée verticalement, je suis d'accord. Mais je veux aussi centrer le contenu dans la liste déroulante. –

+0

La définition de l'alignement vertical au centre d'un ComboBoxItem ne fait rien non plus. –

+0

@Sergio VerticalContentAlignment – Hogan

3

Si je copie et colle votre code, le texte est aligné verticalement au centre de la zone de liste déroulante pour moi. Êtes-vous sûr de ne pas avoir de Style ou de Modèle configuré dans votre application qui s'applique à vos contrôles et de le faire?

EDIT: Nevermind. J'ai eu en fait un style mis en place dans mon application:

<Style TargetType="{x:Type ComboBox}"> 
     <Setter Property="VerticalContentAlignment" Value="Center" /> 
</Style> 

Alors quand je copié et collé votre code, il a travaillé pour moi!

Questions connexes