2013-03-07 84 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。