【问题标题】:Xamarin Forms - ListView performances - Binding (.xaml) vs OnBindingContextChanged (.cs)Xamarin 表单 - ListView 性能 - 绑定 (.xaml) 与 OnBindingContextChanged (.cs)
【发布时间】:2018-04-11 09:49:32
【问题描述】:

我正在开发一个 Xamarin Forms 应用程序,该应用程序需要一个带有 CustomCells 'MyCustomCell' 的 ListView。单元格具有中等数量的绑定 (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);
}

我测试了这两种解决方案,第二个对我来说似乎更快。我对吗 ?这两种解决方案的真正区别是什么?

【问题讨论】:

    标签: c# xamarin binding xamarin.forms custom-cell


    【解决方案1】:

    我在我的项目中对 ListView 进行了优化,并且我还阅读了这个主题。我无法回答您关于 OnBindingContext 的问题,但为了加快您的列表视图速度,您应该检查 CachingStrategy。这是一种真正的力量:)
    但是第一个例子比第二个更好,因为 OnBindingContext 中的逻辑不是最佳实践。
    您应该关注 MVVM 以获得清晰易懂的代码和解决方案。

    【讨论】:

    • 谢谢,但我已经检查了 CachingStrategy(参见我的帖子...),出于我暴露的原因,我决定使用 RecycleElement。
    猜你喜欢
    • 2014-09-07
    • 2016-10-10
    • 2018-03-08
    • 1970-01-01
    • 1970-01-01
    • 2015-11-05
    • 1970-01-01
    • 2016-09-08
    • 2017-01-18
    相关资源
    最近更新 更多