Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xamarin.forms Xamarin表单列表视图分解单元格高亮显示_Xamarin.forms - Fatal编程技术网

Xamarin.forms Xamarin表单列表视图分解单元格高亮显示

Xamarin.forms Xamarin表单列表视图分解单元格高亮显示,xamarin.forms,Xamarin.forms,这似乎是一个非常原始的问题,应该通过更改属性来解决。但我的问题是: 用户从列表视图中选择一个单元格 我覆盖单元格的背景色,并将其设置为适当的颜色(我们有不同的颜色主题) 当我返回listview并再次选择同一项时,单元格运行的代码与以前相同,但高亮显示的颜色是默认颜色 我见过的唯一解决方法是NOT将SelectedItem设置为null。我之所以这样做是因为如果我不这样做,并且我返回到我的listview,我就不能选择相同的项目 您可能认为Xamarin在listviewHighlightC

这似乎是一个非常原始的问题,应该通过更改属性来解决。但我的问题是:

  • 用户从列表视图中选择一个单元格
  • 我覆盖单元格的背景色,并将其设置为适当的颜色(我们有不同的颜色主题)
  • 当我返回listview并再次选择同一项时,单元格运行的代码与以前相同,但高亮显示的颜色是默认颜色
我见过的唯一解决方法是
NOT
SelectedItem
设置为null。我之所以这样做是因为如果我不这样做,并且我返回到我的listview,我就不能选择相同的项目

您可能认为Xamarin在listview
HighlightCellSelection
上有一个属性,我可以将它设置为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;
    }
}

基本上,如果我将属性设置为与以前相同的值,则不会设置该属性。只需先将其更改为
透明
,然后再更改为所需的颜色,即可修复此问题