11
votes

Paire de valeur de clé Combobox dans WPF

Considérez que j'ai une collection de paires de valeurs de valeur (EX Key = MSFT Valeur = MSFT Microsoft) que je lie au ComboBox. Displaymemeberpath = valeur. Ce qui suit doit être accompli

  • sur la sélection d'un élément seulement doit être affiché dans Combo,

  • L'utilisateur pourrait également taper une nouvelle valeur dans le combo.

    Je ne peux pas proposer la solution qui prend en charge ces deux caractéristiques. La résolution d'un casse l'autre. xxx


2 commentaires

Vous pouvez essayer une boîte de texte distincte qui affiche la clé de l'élément sélectionné. Nommez le ComboBox et utilisez-le comme source d'élément de liaison et le chemin est sélectionné. Je pense que vous utilisez SELECTEYITEM.KEY pour vous rendre à la clé, mais je ne suis pas sûr.


Si vous voulez voir la nouvelle entrée entrée de l'utilisateur, vous devez mettre à jour vos itemsource (courroix) avec la nouvelle valeur.


3 Réponses :


-8
votes

Je ne pense pas une sortie droite de la boîte ComboBox est l'élément UI approprié pour que vous puissiez utiliser dans cette situation. Le problème ici est que la combinaison n'est pas conçue pour prendre en charge les paires de clé / valeur, en particulier si vous souhaitez que l'utilisateur puisse ajouter des valeurs au dictionnaire pendant que vous liez la touche. Par exemple, si vous leur permettez d'ajouter une valeur, comment ajoutez-vous la clé ou la sélection de la clé à mettre à jour?

Je pense que la solution consiste à avoir deux contrôles: une combinaison pour la sélection de la clé et une zone de texte pour la saisie de valeur. La zone de texte Valeurs est masquée jusqu'à ce que l'utilisateur sélectionne une clé. Une fois la clé sélectionnée, demandez-leur de saisir leur entrée de valeur dans la zone de texte et d'appuyer sur ENTER ou une touche, puis définissez la valeur sur la touche sélectionnée.


0 commentaires

35
votes

Je suppose que ce que vous cherchez est le suivant.

ComboBoxPairs cbp = (ComboBoxPairs)cmbBrokers.SelectedItem;

string _key = cbp._Key;
string _value = cbp._Value;


0 commentaires

9
votes

expansion sur l'exemple d'Adams avec une solution encore plus générique.

Dans les XAML.CS Créez une propriété de collection observable et attribuez-la une collection. p> xxx pré>

dans le fichier XAML Dataildind Votre collection observable à la propriété que vous avez créée dans le code de référence. P>

<ComboBox Grid.Row="3"
          Grid.Column="1"
          ItemsSource="{Binding MyCollection}"
          DisplayMemberPath="Key" />


0 commentaires