Xamarin.forms Xamarin表单列表视图分解单元格高亮显示
这似乎是一个非常原始的问题,应该通过更改属性来解决。但我的问题是:Xamarin.forms Xamarin表单列表视图分解单元格高亮显示,xamarin.forms,Xamarin.forms,这似乎是一个非常原始的问题,应该通过更改属性来解决。但我的问题是: 用户从列表视图中选择一个单元格 我覆盖单元格的背景色,并将其设置为适当的颜色(我们有不同的颜色主题) 当我返回listview并再次选择同一项时,单元格运行的代码与以前相同,但高亮显示的颜色是默认颜色 我见过的唯一解决方法是NOT将SelectedItem设置为null。我之所以这样做是因为如果我不这样做,并且我返回到我的listview,我就不能选择相同的项目 您可能认为Xamarin在listviewHighlightC
- 用户从列表视图中选择一个单元格
- 我覆盖单元格的背景色,并将其设置为适当的颜色(我们有不同的颜色主题)
- 当我返回listview并再次选择同一项时,单元格运行的代码与以前相同,但高亮显示的颜色是默认颜色
NOT
将SelectedItem
设置为null。我之所以这样做是因为如果我不这样做,并且我返回到我的listview,我就不能选择相同的项目
您可能认为Xamarin在listviewHighlightCellSelection
上有一个属性,我可以将它设置为false。不管是谁,有什么办法吗
这是我的密码:
ListView.ItemSelected += (s, e) =>
{
((ListView)s).BackgroundColor = App.IsDarkThemeEnabled() ? Xamarin.Forms.Color.Black : Xamarin.Forms.Color.White;
XamarinMobile.ViewModels.GridCellViewModel cell = (XamarinMobile.ViewModels.GridCellViewModel)e.SelectedItem;
((ListView)s).SelectedItem = null;
}
同样在我的绑定上下文中,它也做同样的事情:
this.Tapped += (s, e) => {
this.View.BackgroundColor = App.IsDarkThemeEnabled() ? Xamarin.Forms.Color.Black : Xamarin.Forms.Color.White;
};
我假设这是在iOS上,但如果我正确理解了您的问题,并且您只想禁用默认单元格高亮显示,您可以制作ViewCellRenderer并更改单元格选择样式
public class ViewCellRenderer : Xamarin.Forms.Platform.iOS.ViewCellRenderer
{
public override UITableViewCell GetCell(Cell item, UITableViewCell reusableCell, UITableView tv)
{
var cell = base.GetCell(item, reusableCell, tv);
cell.SelectionStyle = UITableViewCellSelectionStyle.None;
cell.BackgroundColor = UIColor.Clear;
return cell;
}
}
基本上,如果我将属性设置为与以前相同的值,则不会设置该属性。只需先将其更改为
透明
,然后再更改为所需的颜色,即可修复此问题