我正在使用Xamarin Forms选择器控件,并需要设置文本颜色,但是没有这样的属性。我尝试制作了一个自定义渲染器,在Android和iOS上都可以正常工作(最终我重新绘制了控件)。在wp8.1平台上,没有绘制事件,而且渲染器中的控件本身似乎没有设置文本颜色的属性。我还尝试过不成功地更改选择器绑定到的控件。
目前,我已经在PCL中创建了可绑定属性TextColor,它有效地工作。我的渲染器代码如下所示(我已剥离了所有测试代码,并仅放置基本代码,因为我尚未找到任何有用的东西,并且只是为了让每个人保持上下文,请注意属性Picker.TextColorProperty不存在,这就是我想要做的...
using Namespace.CustomControls;
using Namespace.WinPhone.Renderers;
using Xamarin.Forms;
using Xamarin.Forms.Platform.WinPhone;
[assembly: ExportRendererAttribute(typeof(BindablePicker), typeof(BindablePickerRenderer))]
namespace Namspace.WinPhone.Renderers
{
public class BindablePickerRenderer : PickerRenderer
{
protected override void OnElementChanged(ElementChangedEventArgs<Picker> e)
{
base.OnElementChanged(e);
var picker = e.NewElement;
BindablePicker bp = (BindablePicker)this.Element;
if (this.Control != null)
{
var pickerStyle = new Style(typeof(Picker))
{
Setters = {
new Setter {Property = Picker.BackgroundColorProperty, Value = bp.BackgroundColor},
new Setter {Property = Picker.TextColorProperty, Value = bp.TextColor}
}
};
picker.Style = pickerStyle;
}
}
}
}
无论如何,我想知道是否有人对如何做到这一点有更多的了解,并能为我解惑。