2014-09-23 49 views
0

我有一个带有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()。甚至可以采用完整的自定义绑定方式。这些都不是很好。

回答