【问题标题】:Cannot convert Class to ObservableCollection无法将 Class 转换为 ObservableCollection
【发布时间】:2016-04-28 07:43:48
【问题描述】:

我正在尝试将我的课程 AllStock 转换为 ObservableCollection<AllStock> stockList 但我收到以下错误:

'System.Collections.ObjectModel.Collection.Add(Haze.AllStock)' 的最佳重载方法匹配有一些无效参数

这是我的代码:

我创建了我的 Observable Collection -

private ObservableCollection<AllStock> _stockList;
public ObservableCollection<AllStock> stockList
{
    get
    {
        if (_stockList == null)
            _stockList = new ObservableCollection<AllStock>();
        return _stockList;
    }
}

在我的方法中 -

var allStock = await service.GetSysproStockAsync();
var stock = allStock.Select(x =>
new AllStock
{
    Id = x.Id,
    ...
    MaterialThickness = x.MaterialThickness
});

stockList.Add(stock); //Error here - I want to add my 'var stock' to my ObservableCollection
dgSysproStock.ItemsSource = stockList;

为什么会抛出这个错误?

【问题讨论】:

  • var stock = allStock.Select(.... 创建一个新的 IEnumerable 的 allstock。您不能将列表添加到您的收藏中。您必须使用 foreach 循环或类似的方法添加它们。
  • @SebastianSchulz 说得有道理。感谢您的建议;)

标签: c# .net wpf observablecollection


【解决方案1】:

您的 Linq 的 Select 方法返回一个 IEnumerable 但您的 stockList.Add 没有此数据类型的重载(仅 AllStock强>)。

foreach(AllStock aStock in stock)
    stockList.Add(aStock)

应该可以。不幸的是,ObservableCollection 没有 AddRange 方法,例如 List

【讨论】:

    【解决方案2】:

    ObservableCollection 的 Add() 需要一个 List,因此您需要提供一个 List。

    【讨论】:

    • 不是构造函数,是 Add 方法。构造函数有 IEnumerables 的重载
    猜你喜欢
    • 2017-10-31
    • 2019-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-09
    • 1970-01-01
    • 2017-04-25
    • 1970-01-01
    相关资源
    最近更新 更多