MvvmCross绑定到Android ImageView上的ImageResource属性

时间:2014-10-21 14:17:01

标签: android data-binding imageview xamarin mvvmcross

我一直在撞墙,因为我认为应该是一个容易出问题的问题。

我正在使用Xamarin和MvvmCross编写一个Android应用程序。我有一个ImageView,我想绑定一个资源。资源绑定将基于我的viewmodel上名为Function的字符串属性。值转换器将其转换为int。我假设我应该使用ImageResource属性

所以我正在做以下

<ImageView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    local:MvxBind="ImageResource Function, Converter=MyIconConverter" />

但是这不起作用,我在日志

中收到以下错误

MvxBind:警告:98.79无法为绑定ImageResource for Function创建目标绑定 [0:] MvxBind:警告:98.79无法为绑定ImageResource for Function创建目标绑定 10-21 15:08:27.506 I / mono-stdout(9440):MvxBind:警告:98.79无法为绑定ImageResource for Function创建目标绑定

我的MyIconConverter是我的Android应用程序的一部分(不在核心项目中),因为它是特定于android的,它从字符串转换为int,它所做的就是返回一个资源,例如Resource.Id.Icon

我正在尝试的是什么,如果有的话,任何人都知道我做错了什么。如果不可能,我应该怎么做?

任何帮助将不胜感激,但请。如果我正在做的事情是可能的,请在建议替代方案之前先告诉我如何以这种方式做到这一点

1 个答案:

答案 0 :(得分:2)

MvvmCross带有一堆预先构建的绑定。

您想要使用

local:MvxBind="DrawableId MyIconConverter(Function)"

注意:我使用更简单的语法来调用值转换器。请参阅https://github.com/MvvmCross/MvvmCross/wiki/Databinding

上的 ValueConverters和ValueCombiners的功能语法

有关内置数据绑定的完整列表:

https://github.com/MvvmCross/MvvmCross/blob/bbf9a2ac76e74d9404f4b57036c6e29dfe2cc6c3/Cirrious/Cirrious.MvvmCross.Binding.Droid/MvxAndroidBindingBuilder.cs