Ich versuche, einen MvxValueConverter zu verwenden, um die Hintergrundfarbe eines LinearLayout basierend auf einem booleschen Wert festzulegen. Der Konverter sieht so aus:
%Vor%In meinem AXML-Layout habe ich folgenden Code:
%Vor%Ich erhalte den folgenden Fehler:
%Vor%Die vollständige Fehlerverfolgung ist wie folgt:
%Vor%Also, ich bin ehrlich gesagt nicht sicher, wohin ich von hier aus gehen soll. Was versuche ich? Benutze ich den richtigen MvvmCross-Konverter? Alle Hinweise würden sehr geschätzt werden.
Aktualisierung:
Ändern des Konverters zu:
%Vor% ... hat mein Problem gelöst. Ich hatte auch TextColor MyBooleanValue, Converter=TextColor
auf meinem LinearLayout
, die ähnlich wie BackgroundColorValueConverter
funktionierte, und ich bekam den gleichen Fehler über das Erstellen von Zielbindungen fehlgeschlagen.
Sobald ich meine AXML geändert habe, um zu lesen:
%Vor% ... alles hat wie geplant funktioniert. Für jeden, der zufällig in Zukunft darüber stolpert: Versuch nicht, TextColor
an ein LinearLayout
zu binden, weil es nicht so funktioniert!
Es gibt ein funktionierendes Beispiel von BackgroundColor
binding in Ссылка
Dies verwendet die BackgroundColor-Bindung von Ссылка
Funktioniert dieses Beispiel für Sie?
Wenn ja, können Sie den Unterschied zwischen diesem Muster und dem Muster, das Sie verwenden, erkennen? Ist es ein Problem mit dem Color Plugin? (Ist das in Ihr UI-Projekt geladen?) Ist es ein Problem mit LinearLayout im Vergleich zu TextView? Gibt es noch weitere Fehler, die Sie angeben können? Die Zeile, die Sie angegeben haben, wird auf Ссылка erstellt - aber normalerweise gibt es noch eine andere Spur vor dieser Zeile.
Wenn nein, dann ist das beunruhigend, weil es bedeutet, dass es ein allgemeiner Fehler ist ...
Update: (nachdem weitere Informationen bereitgestellt wurden)
Ich denke, das Problem ist in Ihrem ValueConverter - um mit Android zu arbeiten, muss Ihr ValueConverter mit einem nativen Typ enden - nicht mit dem plattformunabhängigen MvxColor
. Der Fehler, den Sie sehen, ist eine ungültige Cast-Ausnahme - weil die Bindung versucht, Ihre MvxColor
auf eine Android.Graphics.Color
in Ссылка
Um in Native zu konvertieren, können Sie die Basisklasse MvxColorValueConverter
verwenden - siehe Ссылка
Ein Beispiel dafür ist Ссылка
%Vor%Es gibt einige Dokumente zu Farbkonvertern in Ссылка