Xamarin form-UWP - 在快速滚动列表时显示数据之前显示的黑色单元格
Xamarin form-UWP - black cell showing before data is visible on fast scrolling of list
当我快速滚动列表时,在数据出现之前每个单元格都显示为黑色 loaded.If 我缓慢滚动时数据黑色单元格不会出现。此行为仅发生在 Xamarin UWP 项目中。请找到下图作为参考。
这不是您的代码的问题。当您滚动得太快时,系统没有时间像您滚动一样快地渲染单元格,因此会出现黑色单元格。
通过编写自定义 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;
}
}
现在列表工作完美,没有任何黑色单元格渲染问题。
当我快速滚动列表时,在数据出现之前每个单元格都显示为黑色 loaded.If 我缓慢滚动时数据黑色单元格不会出现。此行为仅发生在 Xamarin UWP 项目中。请找到下图作为参考。
这不是您的代码的问题。当您滚动得太快时,系统没有时间像您滚动一样快地渲染单元格,因此会出现黑色单元格。
通过编写自定义 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;
}
}
现在列表工作完美,没有任何黑色单元格渲染问题。