我在我的Xamarin.Android项目中使用MVVM灯,并希望将MainViewModel
的{{1}}属性绑定到充当背景的StatusColor
的背景中一个GradientDrawable
控件。
不幸的是,ImageView
没有任何GradientDrawable
属性可以将我的颜色绑定到Color
方法。有没有办法让MVVM指示灯在SetColor(int)
的{{1}}属性发生变化时始终调用此SetColor(int)
方法?
丑陋的(!)替代方法是在ViewModel更改颜色属性时触发事件,但我真的想避免这种情况......
我的代码目前看起来像这样:
StatusColor
如果有帮助,这是我的MainViewModel
控件,其// 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" />
答案 0 :(得分:1)
使用Binding.WhenSourceChanges方法。
this.SetBinding(
() => MainViewModel.StatusColor)
.WhenSourceChanges(() =>
{
// This is where you can use SetColor
});