我正在使用 aListView
来显示一组项目,并且我正在分配这些项目,如下所示:
page.Items = _sampleData.Cats.Select(obj => (object) obj);
这很好用,每个Cat
都显示在列表中。可重复地,如果我移除(object)
演员表,并使用分配项目
page.Items = _sampleData.Cats.Select(obj => obj);
或者
page.Items = _sampleData.Cats;
然后,不是数据被正确存储,而是第一个的孩子显示在列表中。这似乎……不直观?如果不是明确的,我在我的代码中是否遇到了一些执行不同的边缘情况,或者这种转换真的有影响吗? Cat
Items
object
编辑:附加代码。
Cats
是一个Cat
对象列表:
public class Cat : IEnumerable<Trait>, IEnumerable
{
public String Name;
// getter and setter
public List<Trait> Traits;
// getter and setter
public IEnumerator<Trait> GetEnumerator() {
return Traits.GetEnumerator();
}
IEnumerator IEnumerable.GetEnumerator()
{
return GetEnumerator();
}
}
这ListView
是一个 Metro UI 组件:
<ListView x:Name="CatListView" ItemsSource="{Binding Source={StaticResource CollectionViewSource}}" ...>
并且数据正在提供给我的一个课程中ListView
的 setter :Items
private IEnumerable<object> _items;
public IEnumerable<object> Items
{
get
{
return _items;
}
set
{
_items = value;
CollectionViewSource.Source = value;
}
}