这似乎是一个愚蠢的问题,但我很难找到正确的答案。我正在使用MVVMCross和Xamarin为iOS编写应用程序。在应用程序中,我想使用标准字幕单元格样式的TableView。我能够成功绑定到标题和详细信息文本,但到目前为止,将Image绑定到本地文件是不成功的。我看到的大多数示例都是使用从网络中提取的图像,而在这里我想使用Resources文件夹中的图像。我也试图避免编写自定义单元格。
如何使用MVVMCross和Xamarin将本地图像绑定到标准的字幕单元格样式?
有问题的代码行:
var source = new MvxStandardTableViewSource (TableView, UITableViewCellStyle.Subtitle, new NSString( "CellID" ), "ImageURL Image; TitleText Title; DetailText EventDate");
谢谢!
答案 0 :(得分:1)
您可以使用转换器执行此操作:
public class ItemTypeToImageValueConverter : IMvxValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
string assetName = "unknown";
switch ((ItemType)value) {
case ItemType.SOMETHING:
assetName = "something";
break;
default:
throw new ArgumentOutOfRangeException ();
}
return "res:item_" + assetName + ".png";
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
然后将其绑定到您的UI:
private readonly MvxImageViewLoader typeImageViewLoader;
public ItemItemTableViewCell(IntPtr handle)
: base(handle)
{
typeImageViewLoader = new MvxImageViewLoader(() => BackgroundImageView);
this.DelayBind(() =>
{
var set = this.CreateBindingSet<ItemItemTableViewCell, Item>();
set.Bind(typeImageViewLoader).To(vm => vm.Type).WithConversion("ItemTypeToImage");
set.Apply();
});
}