C# 如何在Xamarin中的my ViewModel渲染器中获取表节的TextColor值
我正在使用下面的代码将我的C# 如何在Xamarin中的my ViewModel渲染器中获取表节的TextColor值,c#,xamarin,xamarin.forms,xamarin.ios,custom-renderer,C#,Xamarin,Xamarin.forms,Xamarin.ios,Custom Renderer,我正在使用下面的代码将我的CustomTableView的表部分中的文本设置为蓝色(具体为淡蓝色),并将文本设置为粗体 assembly: ExportRenderer(typeof(CustomTableView), typeof(CustomTableViewRenderer))] namespace MyApp.iOS.CustomRenderers { public class CustomTableViewRenderer : TableViewRenderer {
CustomTableView
的表部分中的文本设置为蓝色(具体为淡蓝色),并将文本设置为粗体
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)),
};
}
}
}
}
assembly:ExportRenderer(typeof(CustomTableView),typeof(CustomTableViewRenderer))]
命名空间MyApp.iOS.CustomRenders
{
公共类CustomTableViewRenderer:TableViewRenderer
{
受保护的覆盖无效OnElementChanged(ElementChangedEventArgs e)
{
基础。一个要素发生变化(e);
if(Control==null)
返回;
var tableView=控件作为UITableView;
var customTableView=作为customTableView的元素;
tableView.WeakDelegate=新的CustomHeaderTableModelRenderer(customTableView);
}
受保护的覆盖无效OnElementPropertyChanged(对象发送方,PropertyChangedEventArgs e)
{
base.OnElementPropertyChanged(发送方,e);
}
私有类CustomHeaderTableModelRenderer:TableViewModelRenderer
{
私有只读CustomTableView\u CustomTableView;
公共CustomHeaderTableModelRenderer(TableView模型):基础(模型)
{
_customTableView=作为customTableView的模型;
}
公共覆盖UIView GetViewForHeader(UITableView表格视图,第九节)
{
返回新的UILabel()
{
Text=标题或标题(表格视图,章节),
TextColor=UIColor.FromRGB(30114255),//问题在这里
Font=UIFont.BoldSystemFontOfSize(新的nfloat(22.0)),
};
}
}
}
}
我遇到的问题是,我不想用RGB值为标题中的文本设置TextColor
,并强制它始终为DodgerBlue
,而是想从每个表节的TextColor
属性中获取颜色,并使用它(这将允许我在其他地方重复使用此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)),
};
}
}