2011-02-28 89 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和解決的問題。