2010-09-14 6 views
0

Je suis capable de lier un « MyDictionary.Value » à une zone de liste déroulante et voir les valeurs en elle:Comment lier et récupérer des informations dans un dictionnaire <Tkey, TValue> vers un ComboBox?

Dictionary<string, Friends> friend_list = new Dictionary<string, Friends>(); 
Friend_chat_list.ItemsSource = friend_list.Values; 

Et voici le code XAML:

<ComboBox x:Name="Friend_chat_list" Width="90" ItemsSource="{Binding}" SelectionChanged="Friend_chat_list_SelectionChanged"> 
    <ComboBox.ItemTemplate> 
     <DataTemplate> 
      <TextBlock Text="{Binding Name}" TextTrimming="WordEllipsis"/> 
     </DataTemplate> 
    </ComboBox.ItemTemplate> 
</ComboBox> 

Voici la classe je pour créer mon dictionnay:

public class Friends 
{ 
    public string Friend_guid { get; set; } 
    public string Name { get; set; } 
    public string Message { get; set; } 
    public string FriendAvatar { get; set; } 
    public string Status { get; set; } 
    public string Status_Image { get; set; } 
    public List<Chat> chat_list { get; set; } 
} 

ce que je voudrais faire est de lier la chaîne « Friend_guid » comme ValueMember et non un DisplayMember, que je pouvais récupérer de l'événement « SelectionChan ged ". L'utilisateur ne verrait que "Friend_name" dans la liste déroulante mais il me retournerait "Friend_guid" au lieu de "Friend_name".

L'aide serait grandement appréciée.

Ephismen.

Répondre

1

XAML ---

< ComboBox x: Name = "Friend_chat_list" width = "90" ItemsSource = "{Binding MyFirendsList.Values}" SelectionChanged = "Friend_chat_list_SelectionChanged" DisplayMemberPath = "Nom" SelectedValuePath = "Friend_guid" >

</ComboBox> 

code Derrière

public partial class Window1 : Window 
{ 
    public Window1() 
    { 
     InitializeComponent(); 

     MyFirendsList = new Dictionary<string, Friends>(); 

     MyFirendsList.Add("1", new Friends() { Friend_guid = Guid.NewGuid().ToString(),Name = "Saurabh" }); 
     MyFirendsList.Add("2", new Friends() { Friend_guid = Guid.NewGuid().ToString(), Name = "Nitya" }); 

     this.DataContext = this; 

    } 

    public Dictionary<string, Friends> MyFirendsList { get; set; } 

    private void Friend_chat_list_SelectionChanged(object sender, SelectionChangedEventArgs e) 
    { 
      MessageBox.Show((sender as ComboBox).SelectedValue.ToString()); 
    } 
} 

public class Friends 
{ 
    public string Friend_guid { get; set; } 
    public string Name { get; set; } 
    public string Message { get; set; } 
    public string FriendAvatar { get; set; } 
    public string Status { get; set; } 
    public string Status_Image { get; set; } 

} 
+0

Cette liaison fonctionne mais comment récupérer la valeur de SelectedValuePath en C#, quand j'essaie de le faire, je n'ai que le type: Friend_guid. Je voudrais avoir la vraie valeur derrière cela. – Aymeric

+0

R u geeting Nom affiché correctement? – TalentTuner

+0

vous devez simplement utiliser Combobox.SelectedValue. – TalentTuner