2011-02-28 88 views
2

我遇到了一个ListBox控件,该控件具有绑定到它的对象列表。列表框列表<T>删除项目时的绑定问题

我每次我在列表中添加或删除的对象/时间调用此函数:

private void RefreshBarList() 
{ 
    lstBar.DataSource = null; 
    lstBar.Items.Clear(); 
    lstBar.DisplayMember = "BarDescription"; 
    lstBar.DataSource = BarCollection.BarList; 
    lstBar.Refresh(); 
} 

添加项目时,列表或列表中删除任何东西,但最后一个项目它运作良好。如果我删除列表中的最后一个对象,它将在列表框中显示对象类型,而不是BarDescription

BarCollection是另一个包含带Bar对象的List的类,BarCollection.BarList正好返回该列表。

酒吧类是非常简单的:

public class Bar 
{ 
    private string _barDescription; 

    public string BarDescription 
    { 
     get 
     { 
     return _barDescription; 
     } 
    } 

    public Bar(string barDescription) 
    { 
     _barDescription = barDescription; 
    } 
} 

我想不通为什么会这样,没有任何人有什么建议?任何帮助将不胜感激。

+0

你指的是哪一个Compact-framework? – 2011-02-28 16:33:02

+0

你确定你没有绑定它吗? – 2011-02-28 16:36:26

+0

如果您删除列表中的最后一项,您期望显示什么?列表中没有任何内容,没有可用属性BarDescription的对象。这听起来像是绑定空对象的默认行为,因为只有签名(但没有数据)可用。 – 2011-02-28 16:40:50

回答

2

尝试使用BindingList<T>代替List<T>

+0

+1:我在博客上讨论了2008年9月解决这个问题 - 请参阅http://www.nichesoftware.co.nz/blog/200809/databinding-lists – Bevan 2011-02-28 19:00:29

0

我有同样的问题,只有把ToArray的()在MYLIST和解决的问题。