Ich verwende Xamarin Forms Picker Control und muss die Textfarbe festlegen, es gibt jedoch keine solche Eigenschaft. Ich habe versucht, einen benutzerdefinierten Renderer zu machen, der für mich in android und ios ausgearbeitet hat (ich habe das Steuerelement neu gezeichnet). In der wp8.1-Plattform gibt es kein Draw-Ereignis, und das Steuerelement selbst im Renderer scheint nicht über die Eigenschaften zum Festlegen der Textfarbe zu verfügen. Ich habe auch versucht, die Kontrolle zu ändern, die der Pflücker erfolglos bindet.Ändern der Standardtextfarbe eines Picker-Steuerelements in Xamarin Forms für Windows Phone 8.1
Derzeit habe ich die bindbare Eigenschaft TextColor in der PCL erstellt, die funktioniert. Der Code für meinen Renderer ist unten gezeigt (ich habe meinen gesamten Testcode entfernt und stelle nur den Basiscode her, da ich noch nichts Nützliches gefunden habe und meinen Code einfüge, um alle im Kontext zu halten). Beachten Sie auch, dass die Eigenschaft Picker.TextColorProperty muß nicht existieren, und ist das, was ich tun möchte ...
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;
}
}
}
}
Wie auch immer ich frage mich, wenn jemand könnte ein wenig mehr Wissen darüber, wie dies zu tun und Schuppen könnte etwas Licht auf mich.
Dank, die perfekt funktioniert! Ich habe den Code korrigiert und die Klassendeklaration mit der PickerRenderer-Vererbung hinzugefügt (erscheint versehentlich überschrieben), falls jemand auf diese Frage stolpert. –
Das ist großartig (+1), aber eine Sache - warum verwenden Sie einen Stil, um die Hintergrundfarbe zu überschreiben? Das heißt, Sie überschreiben auch alle anderen Stile, die sich möglicherweise auf dem Xamarin-Element befinden. Stattdessen sollten Sie nur die einzelne Hintergrundfarbe-Eigenschaft festlegen. – jbyrd