我有一个带有ImageView的布局。我希望根据我的核心项目中的逻辑显示不同的图像。将图像添加到资源文件夹并将其与转换器绑定起作用。对于我的ValueConverter:
public class MyImageValueConverter : MvxValueConverter<MyMap, string>
{
protected override string Convert(MyMap value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
return GetResourcePath(value);
}
private string GetResourcePath(MyMap map)
{
string path = "";
switch (map)
{
case MyMap.Map1:
path = "map1.png";
break;
case MyMap.Map2:
path = "map2.png";
break;
default:
throw new Exception("no image for map: " + map.ToString());
}
return path;
}
}
在我看来,我这样绑定它:
...
var map = FindViewById<MvxImageView>(Resource.Id.my_imageview);
set.Bind(map).For("AssetImagePath").To(vm => vm.CurrentMap).WithConversion("MyImage");
...
现在回答我的问题。我更倾向于从资源drawable设置图像,但我还没有找到一种方法来做到这一点。我觉得我应该只能从我的转换器返回一个资源ID,并将它绑定到某个属性(哪个?)。
或者我可以创建一个继承自MvxImageView的新类,并添加一个我可以执行单向绑定的属性,它调用SetImageResource()。甚至可以采用完全自定义的绑定方式。这些似乎都不是很好。
答案 0 :(得分:2)
绑定到MvxImageView的DrawableId
看看MvxAndroidBindingBuilder
,它有一些隐藏的宝石: