WPF : Problème de sélection dans un combobox

Il peut vous arriver de vouloir afficher dans une combobox des informations provenant de plusieurs propriétés de vos objets.

Pour cela, vous utilisez surement un DataTemplate. Je me suis heurté à un problème lors de la mise en place de mon DataTemplate. En effet, si le texte n’est pas assez long, il m’était impossible de sélectionner une entrée de la combobox en cliquant après la fin de mon texte.

Voici la bonne technique pour ne pas avoir ce problème.

Imaginons une classe Person ayant 2 attributs LastName (Nom) et FirstName (Prénom). Nous voulons dans notre combobox concaténer le nom et le prénom de chaque personne.

Voici le code que j’utilise :

<DataTemplate x:Key="myComboboxTemplate">
    <DockPanel HorizontalAlignment="Stretch">
        <TextBlock DockPanel.Dock="Left" Text="{Binding LastName}"/>
        <TextBlock DockPanel.Dock="Left" xml:space="preserve" Text=" "/>
       <TextBlock DockPanel.Dock="Left" Text="{Binding FisrtName}"/>
   </DockPanel>
</DataTemplate>

Et voici comment utiliser le template :


<Combobox ItemTemplate="{StaticResource myComboboxTemplate}"
                  SelectedItem="{Binding SelectedPerson}"
                  ItemsSource="{Binding myPersonList}" />

Afin de pouvoir sélectionner une entrée de la combo box via le clavier, il faut rajouter les attributs suivant :

IsTextSearchEnabled="True" TextSearch.TextPath="LastName"

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *