日期:2014-05-17  浏览次数:21132 次

WPF 中listbox的用法疑问
在listbox 里绑定了Person 对象来显示, 我现在需要把某个对象从这个listbox里删除,想删除的通过person 对象来传递,似乎不能直接用listbox.remove(person) 来删除,那我应该怎么删除任何一个想删除的对象.
wpf

------解决方案--------------------
你传的person对象是个重新new的新对象吧,虽然属性一模一样,但是地址不一样,所以listbox里找不到它

for(int i=0;i<listbox1.Items.Count;i++)
{
   Person p=listbox1.Items[i] as Person;
   if(p.ID == person.ID) //假设ID是主键
   {
      listbox1.Items.RemoveAt(i);
      break;
   }
}
------解决方案--------------------
itemsource绑定一个List对象?你的Person得实现INotifyCollectionChanged跟INotifyPropertyChanged,或者直接用ObservableCollection<T>吧。然后后台直接操作这个ObservableCollection对象进行删除增加之类的操作就可以了
------解决方案--------------------
引用:
itemsource绑定一个List对象?你的Person得实现INotifyCollectionChanged跟INotifyPropertyChanged,或者直接用ObservableCollection<T>吧。然后后台直接操作这个ObservableCollection对象进行删除增加之类的操作就可以了

正解,千万别直接使用ListBox的Remove方法,顾名思义只是移除界面上的元素,不影响数据源的。
------解决方案--------------------
直接用ObservableCollection<T>吧, 它会通知UI修改界面的。LISTBOX<T>实现不了的
------解决方案--------------------
引用:
直接用ObservableCollection<T>吧, 它会通知UI修改界面的。LISTBOX<T>实现不了的

你哪里看到有LISTBOX<T>这东西的?真会扯,ListBox是个控件,不是泛型集合类。