【问题标题】:How to dynamically change image in MvvmCross如何在 MvvmCross 中动态更改图像
【发布时间】:2015-08-19 08:17:19
【问题描述】:

我在资源文件夹中有两张图片

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) 如何通过在Local : MvxBind 中传递图像文件名:ImgMsg_Grey 来动态更改图像?

谢谢

【问题讨论】:

    标签: xamarin xamarin.android mvvmcross


    【解决方案1】:

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

    还有你文件中的绑定:

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

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

    【讨论】:

    • 我遵循了您的代码,但在视图中我使用了 Local :MvxBind ="ImageUrl MyIcon(true) 。什么都没有显示。图像是空白的。
    • 您需要绑定到一个属性,而不仅仅是设置一个转换器。看看我的 Xaml 示例。绑定引用了一个名为“MyBoolProperty”的属性。
    猜你喜欢
    • 1970-01-01
    • 2014-06-17
    • 1970-01-01
    • 1970-01-01
    • 2012-08-01
    • 1970-01-01
    • 2017-08-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多