c# - 在 Xamarin Forms FlowListView 中加载无限项
问题描述
我正在为具有多列的自定义列表视图实现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。
截图: 点击这里查看图片
解决方案
问题可能是因为 MainPage 在 InitializeComponent 期间使用了 FlowListView。
更新移动Init
(如下所示)没有修复。
使用前需要打电话FlowListView.Init()
。
你可以简单地通过在 MainPage 构造函数中移动它来做到这一点:
public MainPage()
{
FlowListView.Init();
InitializeComponent();
}
但是,如果您更改为不同的起始页面,您可能会忘记调用它。因此,更好的地方是
应用程序.xaml.cs:
public App()
{
...
FlowListView.Init();
...
}
推荐阅读
- c++ - 如何在 Visual Studio 中使用 clang 格式
- macos - 原因:macos应用找不到图片
- javascript - 如何在 `vue2-google-maps` 中使用`new google.maps.Marker()`
- ios - Swift更改UITabBarItem图像并动态着色
- javascript - 如何将来自 HTML 中动态制作的文本字段的输入存储/传递给 Django?
- php - 注意:未定义的偏移量:不同的行
- python-3.x - 如何计算字典中值之间的差异
- python - django makemigrations 中的操作错误 1050 错误“表已存在”
- python - 从 是什么意思。进口?
- javascript - 更改坐标时,不会创建航点