【发布时间】:2019-06-08 16:56:22
【问题描述】:
我有一个 Xamarin.Forms UWP 应用程序,其中包含一个 ListView。 listView 包含大图像等内容。加载后不久,当我开始滚动 ListView 时,发生 OutOfMemory 异常。我尝试使用分页使ListView变小,但是点击Next几次后,异常仍然发生。我想知道如何释放内存,例如单击下一步按钮。
这里有一些代码:
<StackLayout>
<ListView x:Name="ProductView" Margin="20">
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="50" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Image Source="{Binding Front_Image, StringFormat='https://cdn.mysite.com{0}'}" Grid.Column="0" />
<Label Text="{Binding Name}" Grid.Column="1" FontAttributes="Bold" VerticalOptions="Center" />
</Grid>
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
<Button x:Name="Prev" Text="Previous" Style="{StaticResource NavButton}" Clicked="OnPrevClicked" IsEnabled="false" />
<Button x:Name="Next" Text="Next" Style="{StaticResource NavButton}" Clicked="OnNextClicked" />
</StackLayout>
...
[XamlCompilation(XamlCompilationOptions.Compile)]
public partial class ProductsPage : ContentPage
{
//public ObservableCollection<Product> Products { get; set; }
private int PageNumber { get; set; } = 1;
public ProductsPage ()
{
InitializeComponent();
ProductView.ItemsSource = Product.GetProducts(PageNumber);
}
private void OnPrevClicked(object sender, EventArgs args)
{
ProductView.ItemsSource = Product.GetProducts(--PageNumber);
Prev.IsEnabled = PageNumber > 1;
}
private void OnNextClicked(object sender, EventArgs args)
{
ProductView.ItemsSource = Product.GetProducts(++PageNumber);
Prev.IsEnabled = true;
}
}
【问题讨论】:
标签: listview xamarin.forms xamarin.uwp