Получить внутренний элемент нет из ListCollectionView - PullRequest
2 голосов
/ 09 декабря 2010

Я расширил ListCollectionView и переопределил GetItemAt следующим образом:

public class LazyLoadListCollectionView : ListCollectionView
{

  public override object GetItemAt(int index)
  {
    object rc = base.GetItemAt(index);
    // do something
    return rc;
  }
}

Теперь для моего «сделать что-то» мне нужно положение элемента во внутреннем списке.Пока ListCollectionView не отсортирован, «индекс» ListCollectionView будет одинаковым для внутренней коллекции, но как только ListCollectionView будет восстановлен, индекс будет соответствовать индексу во внутренней коллекции (внутренняя коллекция является ObservableCollection).1004 *

Итак, где ListCollectionView получает внутренний индекс коллекций из индекса в ListCollectionView?Разве где-то не должно быть "int ConvertToInternalIndex (int index)"?

1 Ответ

0 голосов
/ 09 декабря 2010

Я полагаю, это потому, что SourceCollection для ListCollectionView имеет тип IEnumerable. Чтобы получить индекс в SourceCollection, вы можете попробовать привести его к IList и использовать IndexOf. Чтобы получить индекс из IEnumerable см. этот вопрос

public override object GetItemAt(int index)
{
    object rc = base.GetItemAt(index);
    // do something

    int internalIndex = -1;
    IList sourceCollection = SourceCollection as IList;
    if (sourceCollection != null)
    {
        internalIndex = sourceCollection.IndexOf(rc);
    }
    else
    {
        // See
        // https://stackoverflow.com/questions/2718139
    }
    return rc;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...