如何在 Xamarin 的 ViewModel 渲染器中获取 TableSection 的 TextColor 值

How to get the TextColor value of a TableSection in my ViewModel Renderer in Xamarin

我正在使用下面的代码在我的 CustomTableView 蓝色(具体来说是 DodgerBlue)的 TableSections 中制作文本,并将文本设为粗体。

assembly: ExportRenderer(typeof(CustomTableView), typeof(CustomTableViewRenderer))]
namespace MyApp.iOS.CustomRenderers
{
    public class CustomTableViewRenderer : TableViewRenderer
    {
        protected override void OnElementChanged(ElementChangedEventArgs<TableView> e)
        {
            base.OnElementChanged(e);
            if (Control == null)
                return;

            var tableView = Control as UITableView;
            var customTableView = Element as CustomTableView;
            tableView.WeakDelegate = new CustomHeaderTableModelRenderer(customTableView);
        }

        protected override void OnElementPropertyChanged(object sender, PropertyChangedEventArgs e)
        {
            base.OnElementPropertyChanged(sender, e);
        }


        private class CustomHeaderTableModelRenderer : UnEvenTableViewModelRenderer
        {
            private readonly CustomTableView _customTableView;
            public CustomHeaderTableModelRenderer(TableView model) : base(model)
            {
                _customTableView = model as CustomTableView;
            }

            public override UIView GetViewForHeader(UITableView tableView, nint section)
            {
                return new UILabel()
                {   
                    Text = TitleForHeader(tableView, section),
                    TextColor = UIColor.FromRGB(30, 114, 255), //Issue is here
                    Font = UIFont.BoldSystemFontOfSize(new nfloat(22.0)),
                };
            }
        }
    }
}

我遇到的问题是,我不想使用 RGB 值为页眉中的文本设置 TextColor 并强制它始终为 DodgerBlue,而是想从TextColor 属性 每个 TableSection 并改用它(这将允许我在其他地方重复使用此 CustomTableView,因为我可以根据需要更改颜色)。任何关于如何做到这一点的想法都将不胜感激

能够使用以下代码执行此操作:

private class CustomHeaderTableModelRenderer : UnEvenTableViewModelRenderer
{
    private readonly CustomTableView _customTableView;
    public CustomHeaderTableModelRenderer(TableView model) : base(model)
    {
        _customTableView = model as CustomTableView;
    }
    
    public override UIView GetViewForHeader(UITableView tableView, nint section)
    {
        var tableSectionColor = View.Model.GetSectionTextColor((int) section); // This line gets the Color of the Text in the TitleSection.
        if (tableSectionColor.IsDefault)
        {
            return new UILabel()
            {   
                Text = TitleForHeader(tableView, section),
                Font = UIFont.BoldSystemFontOfSize(new nfloat(22.0)),
            };
        }

        return new UILabel()
        {   
            Text = TitleForHeader(tableView, section),
            TextColor = tableSectionColor.ToUIColor(), //Use the color here.
            Font = UIFont.BoldSystemFontOfSize(new nfloat(22.0)),
        };

    }
}