我有一個帶有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