Xamarin form-UWP - 在快速滚动列表时显示数据之前的黑色单元格
Posted
技术标签:
【中文标题】Xamarin form-UWP - 在快速滚动列表时显示数据之前的黑色单元格【英文标题】:Xamarin form-UWP - black cell showing before data is visible on fast scrolling of list 【发布时间】:2017-11-05 21:27:48 【问题描述】:当我快速滚动列表时,每个单元格在加载数据之前显示为黑色。如果我慢慢滚动,数据黑色单元格将不会出现。此行为仅发生在 Xamarin UWP 项目中。请找到下图以供参考。
【问题讨论】:
【参考方案1】:通过编写自定义 ViewCell 和使用本机数据模板解决了该问题。现在快速滚动没有黑色单元格。我发布我的答案,以便有人会发现它有用。
例如:如果您有要显示的名称列表,请遵循:
首先添加自定义viewcell如下
public class CustomViewCell : ViewCell
public static readonly BindableProperty NameProperty =
BindableProperty.Create("Name", typeof(string), typeof(CustomViewCell), "");
public string Name
get return (string)GetValue(NameProperty);
set SetValue(NameProperty, value);
现在在 XAML 中添加 ListView,如下所示:
<ListView
ItemsSource="Binding Products">
<ListView.ItemTemplate>
<DataTemplate>
<custom:CustomViewCell Name="Binding Name"/>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
那你得在UWP项目的App.xaml中写下DateTemplate样式如下:
<ResourceDictionary>
<DataTemplate x:Key="CustomTemplate">
<Grid Padding="10">
<TextBlock Foreground="#333333" FontSize="14" VerticalAlignment="Center" Text="Binding Name"/>
</Grid>
</DataTemplate>
</ResourceDictionary>
最后编写一个 CustomRenderer 将原生 viewcell 替换为我们的 ListView。
public class CustomViewCellRenderer : ViewCellRenderer
public override Windows.UI.Xaml.DataTemplate GetTemplate(Cell cell)
return App.Current.Resources["CustomTemplate"] as Windows.UI.Xaml.DataTemplate;
现在列表可以完美运行,没有任何黑色单元格渲染问题。
【讨论】:
嗨@Renjith,仍然在使用自定义视图单元的列表视图中闪烁黑屏。你能帮帮我吗?【参考方案2】:这不是您的代码的问题。当您滚动得太快时,系统没有时间像您滚动那样快速渲染单元格,因此会出现黑色单元格。
【讨论】:
luccas-clezar 是的,没错。此问题仅在 UWP 中发生。有没有办法克服这个问题。 不幸的是,我不这么认为。我尝试了几种提高性能的方法(例如尝试删除绑定并更改 PropertyChanged 或 BindingContextChanged 中的单元格),但我没有注意到任何性能提升。 您好已通过自定义 ViewCell 解决了该问题。我已经写了customrenderer 来解决这个问题。现在快速滚动没有黑色单元格。我在下面添加了我的答案。以上是关于Xamarin form-UWP - 在快速滚动列表时显示数据之前的黑色单元格的主要内容,如果未能解决你的问题,请参考以下文章
iOS - UITableView - 快速滚动时神秘地重复自己的行? (模拟器)
无法滚动在移动设备上使用 Xamarin.Forms 创建的 xaml 页面