【问题标题】:Add object to ObservableCollection List object将对象添加到 ObservableCollection List 对象
【发布时间】:2013-03-07 09:35:15
【问题描述】:

如何向 ObservableCollection 列表对象添加一个对象?我有一个名为“Assest”的类,我创建了 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);
    }

那么如何克服这种情况。谢谢大家。

【问题讨论】:

  • 你得到什么样的错误? “错误”是没有足够的错误描述。

标签: c# wpf list observablecollection


【解决方案1】:

你的代码有点乱,不清楚为什么你需要 AssestList 和 _collection。

但是,我认为你需要更换

_collection.Add(ass);

AssestList.Add(ass);

【讨论】:

  • 您不能从静态方法调用非静态属性。 AssestList 是非静态的,这就是它给你一个错误的原因。直接添加到 _collection 或将 AssestList 属性更改为静态。
【解决方案2】:

_collection 对象在调用 AssestList 的 getter 时仍然为空。所以,当你使用“_collection.Add(ass);”时,它可以为空(顺便说一句,_collection 是私有的,所以你不能从静态函数中访问它)

为避免这种情况,请始终使用 AssestList。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-14
    • 2022-01-13
    • 2010-12-17
    相关资源
    最近更新 更多