ich MVVM Licht in meinem Xamarin.Android Projekt bin mit und möchte meine MainViewModel
‚s StatusColor
Eigenschaft auf dem Hintergrund eines GradientDrawable
binden, die als Hintergrund einer ImageView
Steuerung wirkt .Bind Drawble Hintergrundfarbe mit MVVM Licht in Xamarin.Android
Leider hat eine GradientDrawable
keine Color
Eigenschaft, dass ich meine Farbe an, nur eine SetColor(int)
Methode binden könnte. Gibt es eine Möglichkeit, MVVM Licht zu sagen, immer diese SetColor(int)
Methode zu nennen, wenn sich die StatusColor
Eigenschaft meiner MainViewModel
ändert?
Die hässliche Alternative wäre ein Ereignis ausgelöst, wenn das Ansichtsmodell die Farbe Eigenschaft ändert, aber ich möchte wirklich, dass vermeiden ...
derzeit Mein Code sieht wie folgt aus (!):
// This does not work!
this.SetBinding(
() => MainViewModel.StatusColor,
() => ((GradientDrawable)IvStatus.Background).Color); // There is no GradientDrawable.Color property...
Wenn es hilft, hier ist meine IvStatus
Kontrolle und der Drawable
sein Hintergrund ist eingestellt auf:
IvStatus
:
<ImageView
android:id="@+id/ivStatus"
android:background="@drawable/Circle"
android:layout_width="10dip"
android:layout_height="10dip"
android:layout_gravity="center_vertical" />
Circle.xml
:
<shape
xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval">
<solid android:color="#cccccc"/>
<stroke
android:width="1dip"
android:color="#333333"/>
</shape>
Vielen Dank im Voraus!
Ich glaube nicht, dass Sie können. Vielleicht werfen Sie einen Blick auf die MvvmCross-Bibliotheken, die möglicherweise eine verbindliche Lösung bieten. Aber soweit ich das für MvvmLight weiß, sollten Sie einfach das Property Change Event in Ihrer Android App abonnieren und manuell einen neuen GradientBrush erstellen, wenn sich der Farbwert in Ihrer VM geändert hat – Miiite