Я использую MVVM свет в моем Xamarin.Android проект и хотел бы связать StatusColor
собственности моих MainViewModel
«ы на фон GradientDrawable
, который выступает в качестве фона в ImageView
контроля ,Bind Drawble Цвет фона с MVVM светом в Xamarin.Android
К сожалению, GradientDrawable
не имеет свойства Color
, которое я мог бы связать своим цветом, всего лишь методом SetColor(int)
. Есть ли способ рассказать, что MVVM свет всегда вызывает этот метод SetColor(int)
всякий раз, когда изменяется свойство StatusColor
моих MainViewModel
?
Уродливый альтернативой будет стрелять событие, когда ViewModel изменяет свойство цвета, но я действительно хочу, чтобы избежать этого ...
Мой код в настоящее время выглядит следующим образом (!):
// This does not work!
this.SetBinding(
() => MainViewModel.StatusColor,
() => ((GradientDrawable)IvStatus.Background).Color); // There is no GradientDrawable.Color property...
Если это помогает, вот мой IvStatus
контроль и Drawable
его фона устанавливается:
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>
Спасибо заранее!
Я не думаю, что вы можете. Возможно, взгляните на библиотеки MvvmCross, они могут иметь обходное решение. Но насколько я знаю, для MvvmLight вам нужно просто подписаться на событие с измененным свойством, в вашем приложении для Android и вручную создать новый GradientBrush, когда значение цвета изменилось на вашей виртуальной машине – Miiite