Как вы правильно подкласс MvxCollectionViewSource? - PullRequest
0 голосов
/ 03 июля 2018

В чем хитрость реализации пользовательского MvxCollectionViewSource?

Я вложил его в подкласс и предоставил реализацию для GetCell(), но полученные ячейки не привязаны к данным. Когда я использую из коробки MvxCollectionViewSource, это работает.

Это случай использования 101, поэтому я, должно быть, что-то делаю не так. Я использую MvvmCross 5.7. Любая помощь будет оценена?

1 Ответ

0 голосов
/ 03 июля 2018

GetCell в MvxCollectionViewSource, MvxTableViewSource и другие варианты выполняют связывание там. Следовательно, если вы переопределите этот метод, вы берете на себя ответственность за выполнение связывания.

Если вы просто хотите предоставить свою собственную ячейку, вместо нее следует переопределить GetOrCreateCellFor. Этот метод используется в GetCell, чтобы получить фактическую ячейку и привязать ее к найденному элементу, вызвав GetItemAt.

Так что вместо этого переопределите GetOrCreateCellFor:

protected override UICollectionViewCell GetOrCreateCellFor(
    UICollectionView collectionView, NSIndexPath indexPath, object item)
{
    var cell = collectionView.DequeueReusableCell(MyCustomCell.Identifier, indexPath) as MyCustomCell;
    if (cell == null)
        cell = new MyCustomCell();

    return cell;
}
...