从特定索引处的可观察集合中检索项目

时间:2014-11-11 16:56:02

标签: c# observablecollection

我正在尝试从ObservableCollection中检索特定索引位置的项目。根据{{​​3}},有属性ItemItems

private ObservableCollection<string> _strings = new ObservableCollection<string>();
string item1;
item1 _strings.Item[0];
item1 _strings.Items[0];

当我使用Item时,我得到:

  

&#39; System.Collections.ObjectModel.ObservableCollection&#39;不包含&#39;项目&#39;的定义没有扩展方法&#39;项目&#39;接受类型&#39; System.Collections.ObjectModel.ObservableCollection&#39;的第一个参数。可以找到(你错过了使用指令或程序集引用吗?)

当我使用Items时,我得到:

  

无法访问受保护的成员&#39; System.Collections.ObjectModel.Collection.Items&#39;通过类型&#39; System.Collections.ObjectModel.ObservableCollection&#39 ;;的限定符;限定符必须是&#39; Model.MyStringCollection&#39; (或从中衍生出来)

我现在无法看到我在做错了什么。

3 个答案:

答案 0 :(得分:2)

你只需称它为:

private ObservableCollection<string> _strings = new ObservableCollection<string>();
...

string item1 = _strings[0];

但你需要先添加到收藏中!

答案 1 :(得分:1)

当任何类具有索引属性时,它会被标记为Item属性。这允许使用object[index]语法而不是object.Item[index]语法引用索引器属性。这是因为该属性需要一个名称,并且是一个定义为

的属性
public T this[int index]
{
    get 
    {
        //...
    }
    set        
    {
        //...
    }
}

编辑:有关详细信息,请参阅this article on indexer properties

答案 2 :(得分:-1)

正确的语法是:

_strings.Item(0);

不是这个

_strings.Item[0];

Item()Items()的调用实际上是一种方法调用。

。不需要索引器操作符