2013-03-07 50 views
1

如何將一個對象添加到ObservableCollection列表對象?我有一個名爲「Assest」的類,我創建了ObservableCollection Asset的列表,並且想要維護它,例如從該ObservableCollection列表添加和刪除元素。現在,當我嘗試將單個元素添加到ObservableCollection時,出現錯誤。將對象添加到ObservableCollection列表對象

這是我的代碼。

private static ObservableCollection<Assest> _collection = null; 

    public ObservableCollection<Assest> AssestList 
    { 
     get 
     { 
      if (_collection == null) 
      { 
       _collection = new ObservableCollection<Assest>(); 
      } 
      return _collection; 
     } 
     set { _collection = value; } 
    } 

    public static ObservableCollection<Assest> ToObservableCollection(List<Assest> assestList) 
    { 
     return new ObservableCollection<Assest>(assestList); 
    } 

    public MainWindow() 
    { 
     InitializeComponent(); 
     this.DataContext = this; 
     LoadData(); 
     comboBox1.ItemsSource = AssestList; 
    } 

    private void LoadData() 
    { 
     Assest assest = new Assest() { AppID = "1", AssestName = "AppName", AppDescription = "Description" }; 
     Assest assest2 = new Assest { AppDescription = "Des2", AppID = "2", AssestName = "hi" }; 

     List<Assest> assList = new List<Assest> {assest, assest2}; 

     ObservableCollection<Assest> generatedAssestList = ToObservableCollection(assList); 
     AssestList = generatedAssestList; 
    } 

    // Here I get an error. 

    public static void AddAppToObservalCollection(Assest ass) 
    { 
     _collection.Add(ass); 
    } 

那麼如何過來這種情況。感謝大家。

+1

你會得到什麼樣的錯誤? 「錯誤」沒有足夠的錯誤描述。 – Nuffin 2013-03-07 09:39:21

回答

3

你的代碼有點混亂,不清楚你爲什麼需要AssestList和_collection。

不過,我認爲你需要

AssestList.Add(ass); 
+2

您不能從靜態方法調用非靜態屬性。 AssestList是非靜態的,這就是爲什麼它會給你一個錯誤。直接添加到_collection或將AssetsList屬性更改爲靜態。 – 2013-03-07 09:49:45

1

_collection對象仍然爲空,以取代

_collection.Add(ass); 

,而你打電話AssestList的消氣。所以,當你使用「_collection.Add(ass);」時,它可以爲null(並且,btw_collection是私人的,所以你不能從靜態函數訪問它)

爲了避免這種情況,總是使用AssestList。