在 Xamarin Forms FlowListView 中加载无限项
Posted
技术标签:
【中文标题】在 Xamarin Forms FlowListView 中加载无限项【英文标题】:Infinite items loading in Xamarin Forms FlowListView 【发布时间】:2021-12-25 16:10:12 【问题描述】:我正在为具有多列的自定义列表视图实施 FlowListView NuGet 包。
(NuGet 包链接:https://www.nuget.org/packages/DLToolkit.Forms.Controls.FlowListView/)
一切都按原样显示。但是应用程序变得非常缓慢。在 Live Visual Tree 中进一步查看时,我发现 FlowListView 中的列表项正在无限加载。不知道是什么原因造成的。
谁能告诉我为什么会这样,以及如何阻止它?
XAML:
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:flv="clr-namespace:DLToolkit.Forms.Controls;assembly=DLToolkit.Forms.Controls.FlowListView"
xmlns:vm="clr-namespace:FlowDemo.ViewModels"
x:Class="FlowDemo.MainPage">
<ContentPage.BindingContext>
<vm:MainViewModel />
</ContentPage.BindingContext>
<StackLayout>
<flv:FlowListView FlowColumnCount="2"
RowHeight="50"
SeparatorVisibility="Default"
HasUnevenRows="false"
FlowItemsSource="Binding Items" >
<flv:FlowListView.FlowColumnTemplate>
<DataTemplate>
<Frame Margin="10" Padding="0" CornerRadius="6" HasShadow="True">
<Label Text="Binding" HorizontalOptions="Center" VerticalOptions="Center" />
</Frame>
</DataTemplate>
</flv:FlowListView.FlowColumnTemplate>
</flv:FlowListView>
</StackLayout>
</ContentPage>
查看模型:
using System.Collections.ObjectModel;
namespace FlowDemo.ViewModels
public class MainViewModel
public ObservableCollection<string> Items get; set; = new ObservableCollection<string>() "Item 1", "Item 2", "Item 3", "Item 4", ;
代码背后:
using DLToolkit.Forms.Controls;
using Xamarin.Forms;
namespace FlowDemo
public partial class MainPage : ContentPage
public MainPage()
InitializeComponent();
FlowListView.Init();
编辑: 我正在使用 Visual Studio 2022 和 .Net Standard 2.0。我还使用 PropertyChanged.Fody 来实现 INotifyPropertyChanged。
截图: Click here to view image
【问题讨论】:
【参考方案1】:问题可能是因为MainPage在InitializeComponent期间使用了FlowListView。
更新移动Init
(如下所示)没有修复。
使用前需要致电FlowListView.Init()
。
你可以简单地通过在 MainPage 构造函数中移动它来做到这一点:
public MainPage()
FlowListView.Init();
InitializeComponent();
但是,如果您切换到不同的起始页面,您可能会忘记调用它。因此,更好的地方是在
App.xaml.cs:
public App()
...
FlowListView.Init();
...
【讨论】:
谢谢,但问题仍然存在。我已经尝试将它放在InitializeComponent()
之前和 App.xaml.cs 中,但是这两种方法似乎都不起作用。
好的。这是令人惊讶的。 VS 输出窗格在运行时是否有任何错误? 我建议在源代码中测试提供的示例 - 看看它是否具有相同的症状。下载 repo github.com/daniel-luberda/DLToolkit.Forms.Controls,打开 tree/master/Samples/DLToolkitControlsSamples/DLToolkitControlsSamples.csproj,构建并运行。如果有同样的问题,请在该 github 存储库的“问题”页面上发布问题。
如果原始样本有效,那么我们需要弄清楚它与您的样本有何不同。下一步是重新开始:创建一个新项目,向其中添加最少的代码以显示问题。以上是关于在 Xamarin Forms FlowListView 中加载无限项的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Xamarin.Forms.Maps(无 Xamarin.Forms.GoogleMaps)在地图中应用样式或更改颜色
Xamarin.Forms:Forms.Context 已过时
Xamarin.Forms 和 Xamarin Native 有啥区别? [关闭]