Для реализации виртуализации в non-ItemsControl, лучше модернизировать ItemContainerGenerator или реализовать простую пользовательскую генерацию?

Мы внедряем нашу собственную специальную комбинацию элементов управления на основе элементов, которая не основана на подклассе ItemsControl (есть несколько причин, по которым мы не можем этого сделать, но я не буду здесь разбираться), но наш элемент управления обрабатывает тысячи и тысячи элементов данных, поэтому мы хотели бы реализовать Visual виртуализация.

Что нас интересует, так это то, имеет ли смысл попытаться втиснуть существующий класс ItemContainerGenerator в наш дизайн или применить наш собственный метод виртуализации.

С одной стороны, ItemContainerGenerator уже обрабатывает виртуализацию и является очень эффективным, а проверенный код почти всегда предпочтительнее, чем начинать с нуля, но с другой стороны, ICG была специально разработана для использования и опирается на функции ItemsControl, который опять же, этот элемент управления не является. Кроме того, это генератор контейнеров, но в нашем случае нам просто нужно сгенерировать и разложить конкретный известный визуал, представляющий элемент данных.

Теперь, может быть, я слишком упрощаю вещи, но все, что я вижу, - это необходимость определить, какие элементы будут видны в ViewPort, убедиться, что визуальные представления этих элементов созданы, измерены и упорядочены, а затем отбросить все оставшиеся элементы. созданные визуальные эффекты. Чтобы отследить все это, кажется, что простая схема сопоставления элементов с элементами - это все, что нужно, возможно, с присоединенным свойством ItemVisual в объекте ViewModel объекта DataItem. Таким образом, когда элемент удаляется / уничтожается, мы просто проверяем, существует ли существующий визуальный элемент, и если это так, уничтожаем его.

Тем не менее, может ли кто-нибудь придумать причину, по которой мы не должны просто внедрять нашу собственную визуальную виртуализацию? Опять же, ICG делает это, но мне интересно, если он возьмет Semi в магазин, чтобы получить яйца.

0 ответов

Другие вопросы по тегам