2014-09-23 50 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()。甚至可以採用完整的自定義綁定方式。這些都不是很好。

回答