Nano Hash - криптовалюты, майнинг, программирование

Xamarin Forms - Представления ListView - Привязка (.xaml) против OnBindingContextChanged (.cs)

Я разрабатываю приложение Xamarin Forms, которому требуется ListView с CustomCells MyCustomCell. Ячейки имеют умеренное количество привязок (9), и каждая ячейка во многом похожа, поэтому я решил установить стратегию кэширования RecycleElement. Этот список легко может содержать 100 пунктов. Каждая ячейка содержит два изображения с источником Uri.

Я обычно привязываю атрибуты представления в моем MyCustomCell.xaml, например, с изображением:

<Image
    x:Name="MyImage"
    Source="{Binding ImageSource}"
    .../>

Но недавно я прочитал эту статью https://docs.microsoft.com/en-us/xamarin/xamarin-forms/user-interface/listview/performance, и мне было интересно, каковы основные различия между привязкой в ​​моем MyCustomCell.xaml и в методе переопределения OnBindingContextChanged ' нравится:

protected override void OnBindingContextChanged()
{
    base.OnBindingContextChanged();
    var item = BindingContext as MyModel;
    MyImage.Source = ImageSource.FromUri(item.ImageSource);
}

Я протестировал оба решения, и второе показалось мне более быстрым. Я прав ? Каковы настоящие различия между этими двумя решениями?


Ответы:


1

Я работал над оптимизацией для ListView в своем проекте, и я тоже читал эту тему. Я не могу ответить на ваш вопрос о OnBindingContext, но для ускорения просмотра списка вам следует проверить CachingStrategy. Это действительно мощь :)
Но 1-й пример лучше 2-го, потому что логика в OnBindingContext - не лучшая практика.
Вы должны следовать MVVM, чтобы получить чистый и понятный код и решение.

11.04.2018
  • Спасибо, но я уже проверил CachingStrategy (см. Мой пост ...), и я решил пойти с RecycleElement по причинам, которые я раскрыл. 11.04.2018
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..