在Xamarin.Android中使用MVVM光绑定可绘制的背景颜色

时间:2016-06-09 09:36:49

标签: mvvm xamarin binding xamarin.android mvvm-light

我在我的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" />

1 个答案:

答案 0 :(得分:1)

使用Binding.WhenSourceChanges方法。

this.SetBinding(
    () => MainViewModel.StatusColor)
    .WhenSourceChanges(() =>
        {
            // This is where you can use SetColor
        });