如何将Dictionary与ComboBox和文本框绑定?

时间:2010-03-29 03:49:40

标签: wpf binding

我有一个Dictionary<String,Person>,其中Person是一个类,定义如下

String role;

public class Person
{ 
  public string firstname{ get; set; } 
  public string lastname{ get; set; } 

  public string city{ get; set; } 
} 

我的问题是如何绑定Dictionary键:String同时使用ComboBox。具有词典值:与三个文本框连接的人。也就是说,一旦在ComboBox中选择了一个键,相应的值,名字,姓氏,城市将分别显示在三个文本框中?

提前致谢!

1 个答案:

答案 0 :(得分:1)

注意:不存在可复制的代码......只是为了解决问题而存在。

视图

我看到一些带有数据绑定的控件,如下面的窗口/视图中所示......

<Combobox ItemsSource="{Binding Path=AlphabeticalIds}" Text="{Binding Path=SelectedId}"/>
<TextBox Text="{Binding Path=SelectedPerson.FirstName}"/>
<TextBox Text="{Binding Path=SelectedPerson.LastName}"/>
<TextBox Text="{Binding Path=SelectedPerson.City}"/>

视图模型

此类的实例被设置为视图的datacontext。它有以下成员。 (它们作为.NET属性公开; NotifyPropertyChange调用标识需要更改通知的属性)

_mapIdToPerson = Dict...

_alphabeticalIds = _map...Keys.Sort();

_selectedId;
set 
{
  _selectedId = value;
  _selectedPerson = _mapIdToPerson[_selectedId];
  NotifyPropertyChange("SelectedId");
  NotifyPropertyChange("SelectedPerson");
}

_selectedPerson;