2011-06-22 6 views
1

J'ai essayé de faire des recherches à ce sujet, mais je n'ai pas pu trouver exactement ce dont j'avais besoin. J'aimerais avoir une liste déroulante avec des éléments codés en dur, mais contenir une chaîne par défaut. Par exemple:Définir la valeur par défaut pour ComboBox

--Sélectionnez Item--

Item1

Item2

Item3

Je ne veux pas le --Sélectionnez Item-- à apparaître dans la liste, seulement sur le combobox lui-même. Je ne souhaite pas non plus que cette valeur soit modifiable.

Merci.

+1

Ce n'est pas la valeur par défaut mais la représentation de 'null'. –

Répondre

2

Vous pourriez Remplacer le modèle par défaut et d'y inclure un TextBlock qui est seulement visible si le SelectedItem est null (utilisez un style avec datatrigger pour cela). Pour obtenir un dixmplate par défaut, vous pouvez modifier le lien check MSDN (Default WPF Themes).

+0

J'ai choisi d'aller dans ce chemin. Je vous remercie. – ecMode

1

Pour ce faire, vous devrez agrandir la classe de zone de liste déroulante et ajouter cette fonctionnalité supplémentaire. Je commencerais par écrire une méthode pour accepter une valeur par défaut, puis écrire une nouvelle méthode pour récupérer la liste des éléments qui exclut l'élément par défaut.

Vous pouvez également gérer le retour NULL lorsque la valeur par défaut est sélectionnée, ainsi la recherche peut-être en ajustant l'indice sélectionné des éléments sélectionnés pour tenir compte d'avoir un élément supplémentaire dans la liste, par exemple

+1

Changer le comportement d'un contrôle devrait être le dernier recours, certainement dans WPF. –

1

Je pense que la meilleure façon de le faire est avec un style simple:

<ComboBox> 
    <ComboBox.Style> 
    <Style TargetType="ComboBox"> 
     <Setter Property="IsEditable" Value="True" /> 
     <Setter Property="IsReadOnly" Value="True" /> 

     <Style.Triggers> 
     <Trigger Property="SelectedIndex" Value="-1"> 
      <Setter Property="Text" Value="-- Select Item --" /> 
     </Trigger> 
     </Style.Triggers> 
    </Style> 
    </ComboBox.Style> 
</ComboBox> 

Réglage de la IsEditable = « true » permet la propriété Text sur la zone de liste déroulante. Afin de s'assurer que la propriété Text ne peut pas être éditée, IsReadOnly = "True" est également requis.

Questions connexes