如何在MvvmCross

时间:2015-08-19 08:17:20

标签: xamarin xamarin.android mvvmcross

我在资源文件夹中有两个图像

1)ImgMsg_Normal.png
2)ImgMsg_Grey.png

in Layout file:

<ImageView

    android:id="@+id/imgMsg"

    android:src="@drawable/ImgMsg_Normal"

    android:layout_width="wrap_content"
    android:layout_height="wrap_content"    
    android:maxHeight="80dp"
    android:maxWidth="80dp"   
    android:layout_margin="20dp"   
    android:scaleType="fitCenter"

    local:MvxBind ="      " />
代码背后的

加载此页面时,它首先显示所述图像:ImgMsg_Normal。

1)如何通过传递图像文件名来动态更改图像:ImgMsg_Grey在Local:MvxBind上面?

由于

1 个答案:

答案 0 :(得分:3)

我们用转换器来做到这一点。所以绑定在(例如)布尔值上。如果为真,则转换器返回图像1,如果值为false,则返回图像2。

转换器(在核心项目中):

public class MyIconValueConverter : MvxValueConverter<bool, string>
{
    protected override string Convert(bool value, Type targetType, object parameter, CultureInfo culture)
    {
        if(value)
        {
            return "res:ImgMsg_Normal";
        }
        else
        {
            return "res:ImgMsg_Grey";
        }
    }
}

你文件中的绑定:

<Mvx.MvxImageView 
    local:MvxBind="ImageUrl MyBoolProperty, Converter=MyIcon" />

使用上面的代码,我们会在显示不同项目的列表中动态更改图标。图标取决于列表中项目的属性。