我有一个带有ImageView的布局。我想展示一个不同的图像,这取决于我的核心项目中的逻辑。将图像添加到资产文件夹并使用转换器进行绑定。对于我ValueConverter:MVVMCross将ImageView绑定到Android资源ID而不是资产路径
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");
...
现在我的问题。我非常希望从可绘制的资源设置图像,但我还没有找到一种方法来做到这一点。我觉得我应该能够从我的转换器返回资源ID,并将其绑定到某个属性(哪个?)。
或者我可以创建一个新的类继承自MvxImageView,并添加一个属性,我可以做一个单向绑定,调用SetImageResource()。甚至可以采用完整的自定义绑定方式。这些都不是很好。
谢谢! BindingBuilder是一个很好的资源,可以发现这些有点“隐藏”的绑定属性 – user1202032 2014-09-23 12:37:39