Как связать и получить информацию в словарев поле со списком? - PullRequest
0 голосов
/ 14 сентября 2010

Я могу связать «MyDictionary.Value» с ComboBox и увидеть значения в нем:

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

А вот код 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>

Вот класс, который я использовал для создания своего словаря:

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; }
}

То, что я хотел бы сделать, это связать строку «Friend_guid» как ValueMember, а не DisplayMEmber, который я мог бы получить по событию «SelectionChanged». Пользователь будет видеть только «Имя_Друга» в выпадающем списке, но вместо «Имя_Друга» мне будет возвращено «Friend_guid».

Помощь будет принята с благодарностью.

Ephismen.

1 Ответ

1 голос
/ 14 сентября 2010

xaml ---

< ComboBox x: Name = "Friend_chat_list" Width = "90" ItemsSource = "{Binding MyFirendsList.Values}" SelectionChanged = "Friend_chat_list_SelectionChanged" DisplayMemberPath = "Имя" SelectedValuePath = "Friend_guid" >

    </ComboBox>

Код позади

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; }

} 
...