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对象进行删除增加之类的操作就可以了
------解决方案--------------------
正解,千万别直接使用ListBox的Remove方法,顾名思义只是移除界面上的元素,不影响数据源的。
------解决方案--------------------直接用ObservableCollection<T>吧, 它会通知UI修改界面的。LISTBOX<T>实现不了的
------解决方案--------------------
你哪里看到有LISTBOX<T>这东西的?真会扯,ListBox是个控件,不是泛型集合类。