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
0
504
1

Ответы 1

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

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

Nicolas Bodin-Ripert 11.04.2018 13:55

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