xamarin - 如何在 MvvmCross 中动态更改图像

标签 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 in Local : MvxBind 以上?

谢谢

最佳答案

我们使用转换器来做到这一点。所以绑定(bind)是在一个(例如) bool 值上。如果为真,则转换器返回图像 1,如果值为假,则返回图像 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";
        }
    }
}

以及文件中的绑定(bind):
<Mvx.MvxImageView 
    local:MvxBind="ImageUrl MyBoolProperty, Converter=MyIcon" />

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

关于xamarin - 如何在 MvvmCross 中动态更改图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32090067/

相关文章:

android - 当无法解析具有 "downloads"权限的内容提供程序时,PackageInstaller 崩溃

jenkins - 无法恢复 nuget 包并出现 "WARNING: Invalid parameter"错误

c# - 更新 xamarin nuget 后构建时 XamarinAndroidBuildResourceRestore 错误

android - Android AXML 中的 MVVMCross MvxDatePicker 绑定(bind)

c# - Task.Delay() 挂起几分钟

ios - 设置UITextField的光标位置

c# - DisplayAlert 之前的事件指示器

xamarin.forms - MvvmCross如何实现 View 模型的条件呈现?

c# - 通过ICommand传递参数

c# - 无法加载程序集 'Xamarin.Android.Support.v4'