Uso il controllo selettore Form Xamarin e richiede l'impostazione del colore del testo, tuttavia non esiste tale proprietà. Ho provato a creare un renderer personalizzato che ha funzionato per me in Android e iOS (ho finito per ridisegnare il controllo). Nella piattaforma wp8.1 non vi è alcun evento Draw e il controllo stesso nel renderer non sembra avere le proprietà per impostare il colore del testo. Ho anche provato a cambiare il controllo che il raccoglitore si lega a invano.Modifica del colore del testo predefinito di un controllo Picker in Xamarin Forms per Windows Phone 8.1
Attualmente ho creato la proprietà bindable TextColor nel PCL che funziona. Il codice per il mio renderer è mostrato sotto (ho spogliato tutto il mio codice di test e sto mettendo solo il codice di base poiché non ho ancora trovato nulla di utile e sto mettendo il mio codice solo per mantenere tutti nel contesto). noti inoltre che il Picker.TextColorProperty proprietà doesnt esisto ed è quello che vorrei fare ...
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;
}
}
}
}
Comunque mi chiedo se qualcuno potrebbe avere un po 'più di conoscenza su come fare questo e potrebbe gettare un po 'di luce su di me.
Grazie a quello ha funzionato perfettamente! Ho corretto il codice e aggiunto la dichiarazione di classe con l'ereditarietà di PickerRenderer (sembra che l'ho sovrascritta accidentalmente) nel caso in cui qualcuno si imbattesse in questa domanda. –
Questo è ottimo (+1), ma una cosa: perché utilizzare uno stile per sovrascrivere il colore di sfondo? Ciò significa che stai ignorando anche altri stili che potrebbero essere presenti nell'elemento Xamarin. Invece dovresti semplicemente impostare la proprietà del colore di sfondo individuale. – jbyrd