Я использую ListView
для отображения коллекции элементов, и я назначаю эти элементы следующим образом:
page.Items = _sampleData.Cats.Select(obj => (object) obj);
Это прекрасно работает, каждый Cat
отображается в списке,Воспроизводимо, если я удаляю приведение (object)
и назначаю Предметы, используя
page.Items = _sampleData.Cats.Select(obj => obj);
или
page.Items = _sampleData.Cats;
Тогда вместо правильного хранения данных, children из first Cat
вместо этого отображаются в списке.Это кажется ... не интуитивным?Есть ли какой-то крайний случай, который я поражаю в своем коде, который работает по-другому, если Items
явно не object
s, или это приведение действительно имеет значение?
Редактировать: Дополнительный код.
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
через установщик для Items
в одном из моих классов:
private IEnumerable<object> _items;
public IEnumerable<object> Items
{
get
{
return _items;
}
set
{
_items = value;
CollectionViewSource.Source = value;
}
}