在Xamarin Forms中的ViewCellRenderer上设置自定义SelectedBackgroundView无效

时间:2016-12-29 13:09:52

标签: c# uitableview xamarin xamarin.forms

我正在尝试在我的应用的幻灯片菜单上自定义ListView的所选背景颜色。所以我有这个自定义ViewCellRenderer,但我仍然在所选项目上获得标准的灰色背景:

public class MenuViewCellRenderer : ViewCellRenderer
{
    UIView background;

    public override UITableViewCell GetCell(Cell item, UITableViewCell reusableCell, UITableView tv)
    {
        var cell = base.GetCell(item, reusableCell, tv);

        if (background == null)
        {
            background = new UIView
            {
                BackgroundColor = UIColor.Brown
            };
        }

        cell.SelectedBackgroundView = background;

        /*
         SANITY CHECKS:

         cell.BackgroundView = background; // this works, proving that I can override SOMETHING with my renderer

         cell.MultipleSelectionBackgroundView = background; // tried this for just in case

         cell.SelectionStyle = UITableViewCellSelectionStyle.None; // has no effect

         Debug.WriteLine("I can read this in the console");  // yip
        */

        return cell;
    }

}

任何人都可以想到为什么这不起作用的原因? 任何建议的替代方案?

1 个答案:

答案 0 :(得分:1)

您的代码适用于我,但SelectedBackgroundView似乎只在短时间内处于活动状态,因此我看到棕色背景,但很快就会淡化回非隔离背景视图。这是iOS的默认行为。您是否正在寻找单元格来保持所选的背景颜色,直到选择了另一个单元格?这可能有点复杂。