WPF 中listbox的用法疑问 在listbox 里绑定了Person 对象来显示, 我现在需要把某个对象从这个listbox里删除,想删除的通过person 对象来传递,似乎不能直接用listbox.remove(person) 来删除,那我应该怎么删除任何一个想删除的对象.wpf 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你传的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是个控件,不是泛型集合类。 WPF界面和数据不同。你只删除界面,那只是不显示了,但数据库还有数据,所以删除的时候获得对象,然后执行数据库删除方法!! 我觉得二楼说的有道理, 直接用remove方法,其实在我这个例子里连界面的东西都删不掉。我的person类已经实现了 INotifyPropertyChanged ,绑定到这个listview的数据源。但是用remove是没法实现界面的删除的。 你的ListBox的ItemSource绑定的是啥?绑定的那个集合或者List需要实现INotifyCollectionChanged并且在这个集合增加或者删除的时候触发事件通知UI进行更改。实现INotifyPropertyChanged对于你这集合的增删没啥用啊。都没触发事件怎么UI怎么会知道你要更改呢? 我认真看了下,好像没有进行绑定,程序是直接对这个lstveiw进行增加和删除操作, ObservableCollection<Person> collection = new ObservableCollection<Person>();listBox.ItemsSource = collection; 突然有个想法, 自己写一个压缩软件, 就当做自己的文件加密方式来用. c# 关于图像合并的效率问题 Validating事件的顺序问题 C#的oracle查询问题 vs2005问题 如何在C#中调用Windows API 做类似资源管理器的程序右边文件夹列表应该用什么控件?请高手指教。 数据库无法连接,怎么做? 【模拟登陆网站】zxkid(如果你有勇气迈出第一步)兄弟 :继续请教你一个WebBrowser问题。。。。。。。。 Hashtable GetEnumerator()后的排序问题 关於TableAdapter的问题 学习C#基础必看案例
{
Person p=listbox1.Items[i] as Person;
if(p.ID == person.ID) //假设ID是主键
{
listbox1.Items.RemoveAt(i);
break;
}
}
我认真看了下,好像没有进行绑定,程序是直接对这个lstveiw进行增加和删除操作,
ObservableCollection<Person> collection = new ObservableCollection<Person>();
listBox.ItemsSource = collection;