有一个listbox与itemsource绑定。 我想在此之后更改集合的数据。 添加数据的点击按钮不会改变列表框。在代码隐藏中的两种方式绑定itemsource?
然后我添加itemsource后的更新,但它使PresentatonFramework.pdb不加载,InvalidOperationException未处理。 我有点理解,这是一种方式绑定。 你能给我一些帮助吗?
private MemberList members = new MemberList();
private void Window_Loaded(object sender, RoutedEventArgs e)
{
members.Add(new Member("superman", "123-1234567", "address1"));
members.Add(new Member("batman", "111-111111", "address2"));
members.Add(new Member("goodman", "222-222222", "address3"));
members.Add(new Member("badman", "333-333333", "address4"));
lbxMbrList.ItemsSource = members;
lbxMbrList.DisplayMemberPath = "lbxMember";
//members.Add(new Member("puzzedman", "000-0000000", "address0")); //<<it makes a strange error message.
}
//I want a button to update the listbox's content
private void Add_Click(object sender, RoutedEventArgs e)
{
members.Add(new Member("puzzedman", "444-4444444", "address5"));
}
private void Clear_Click(object sender, RoutedEventArgs e)
{
members.Clear();
}
update:
class MemberList : IEnumerable<Member>
{
private ObservableCollection<Member> memberList = new ObservableCollection<Member>();
public Member this[int i]
{
get {return memberList[i];}
set {memberList[i] = value;}
}
public void Add(Member member)
{
memberList.Add(member);
}
public void Remove(Member member)
{
memberList.Remove(member);
}
public IEnumerator<Member> GetEnumerator()
{
return memberList.GetEnumerator();
}
IEnumerator IEnumerable.GetEnumerator() { return GetEnumerator(); }
public void Clear()
{
memberList.Clear();
}
}
public class Member
{
private string _name;
private string _phone;
private string _address;
public string Name { get { return _name; } set { _name = value; } }
public string Phone { get { return _phone; } set { _phone = value; } }
public string Address { get { return _address; } set { _address = value; } }
public Member() { }
public Member(string name, string phone, string address)
{
_name = name; _phone = phone; _address = address;
}
public string lbxMember
{
get { return string.Format("{0} {1}", Name, Phone); }
}
}
'lbxMember'属于'Member'类的属性吗? – 2014-12-13 15:19:39
是否是成员列表?如果是这样,它不会实现INotifyCollectionChanged,因此不反映更改。 – Maximus 2014-12-13 15:22:06
是的,lbxMember是Member类的一个属性。 – 2014-12-13 15:22:13