首页 > 解决方案 > 以 xamarin 表单将页面导航到另一个页面时 UI 冻结

问题描述

在我的应用程序 My MainPage Showing Menus 中,单击菜单后下一页加载速度非常慢并冻结了 UI。

当内容页面包含带有 Items 的 listView 时,就会发生这种情况。我的数据页面内容包含 50 个项目的列表视图(无限滚动前 50 个项目)

XAML:

<ListView  
    ItemsSource="{Binding ItemsData}" 
    SelectedItem="{Binding SelectedItemsData}"
    HasUnevenRows="True" 
    BackgroundColor="White" x:Name="ItemsDataList">
    <ListView.ItemTemplate>
        <DataTemplate>
            <ViewCell>
                <Grid 
                    Margin="2,0,2,0" 
                    Padding="8" 
                    IsEnabled="{Binding IsEnableItemsData}">
                    <Grid.RowDefinitions>
                        <RowDefinition Height="*" />
                    </Grid.RowDefinitions>
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition Width="30*"/>
                        <ColumnDefinition Width="30*"/>
                        <ColumnDefinition Width="30*"/>
                        <ColumnDefinition Width="20*"/>
                        <ColumnDefinition Width="20*"/>
                    </Grid.ColumnDefinitions>

                    <Label Text="{Binding SKU}" Grid.Row="0" Grid.Column="0" HorizontalTextAlignment="Center" VerticalOptions="Center" TextColor="{Binding SKUColor}" FontSize="Small"/>
                    <Label Text="{Binding OrderNumber}" Grid.Row="0" Grid.Column="1" HorizontalTextAlignment="Center" VerticalOptions="Center" TextColor="Black" FontSize="Small"/>
                    <Label Text="{Binding CategoryName}" Grid.Row="0" Grid.Column="2" HorizontalTextAlignment="Center" VerticalOptions="Center" TextColor="Black" FontSize="Small"/>
                    <Label Text="{Binding OrderQuantity}" Grid.Row="0" Grid.Column="3" HorizontalTextAlignment="Center" VerticalOptions="Center" TextColor="Black" FontSize="Small"/>
                    <Label Text="{Binding Bin}" Grid.Row="0" Grid.Column="4" HorizontalTextAlignment="Center" VerticalOptions="Center" TextColor="Black" FontSize="Small"/>
                </Grid>
            </ViewCell>
        </DataTemplate>
    </ListView.ItemTemplate>

    <ListView.Behaviors>
        <eventToCommand:EventToCommandBehavior 
            EventName="ItemSelected" 
            Command="{Binding ItemsDataSelectedItemChange}"/>
        <eventToCommand:EventToCommandBehavior 
            EventName="ItemAppearing" 
            Command="{Binding ItemsDataItemAppearing}"/>
    </ListView.Behaviors>
</ListView>

视图模型:

public ObservableCollection<ItemsData> Data
{
    get { return _data; }
    set
    {
        _data = value;
        RaisePropertyChanged();
    }
}

从本地数据库获取数据

Data = GetData(GlobalVariable.BranchId, DataLimit, Offset, SearchText, filterData, "Others", sortData);

如何摆脱这个问题?

标签: xamarinxamarin.forms

解决方案


推荐阅读