C# MVVMCross Xamarin使用转换器绑定到位图

C# MVVMCross Xamarin使用转换器绑定到位图,c#,android,bitmap,xamarin,mvvmcross,C#,Android,Bitmap,Xamarin,Mvvmcross,我有一个可工作的BindableViewPager(感谢Cheesebaron!),在viewpager控件中,我有一个用于每个页面项目的位图。viewpager的My viewmodel包括 private double _bearing; public double Bearing { get { return _bearing; } set { _bearing = value;

我有一个可工作的BindableViewPager(感谢Cheesebaron!),在viewpager控件中,我有一个用于每个页面项目的位图。viewpager的My viewmodel包括

    private double _bearing;
    public double Bearing
    {
        get { return _bearing; }
        set
        {
            _bearing = value;
            RaisePropertyChanged(() => Bearing);
        }
    }
其目的是动态创建位图,使其成为反映方位角的图像。因此,我使用值转换器将ImageView绑定到轴承:

<ImageView
    ...
    local:MvxBind="Bitmap Bearing, Converter=BearingToImage" />



public class BearingToImageConverter : MvxValueConverter<double, byte[]>
{

    protected override byte[] Convert(double value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {

        Bitmap bmp = BitmapFactory.DecodeResource(Application.Context.ApplicationContext.Resources, Resource.Drawable.direction_pointer_black_bg);
        byte[] bitmapData;
        using (var stream = new MemoryStream())
        {
            bmp.Compress(Bitmap.CompressFormat.Png, 100, stream);
            bitmapData = stream.ToArray();
        }

        return bitmapData;
    }
}
并且没有显示图像。查看PictureTaking示例,我看到绑定是通过InMemoryImage转换器直接针对字节数组完成的。如果我需要使用自己的转换器,我是否需要做更多的工作来模拟InMemoryImage转换

解决了,并为回答我自己的问题时的不礼貌道歉,但供将来参考:

问题似乎是缺少InMemoryImage转换器。现在,我不再让转换器返回字节[],而是返回一个对象,即位图本身

因此,转换器签名变成:

public class BearingToImageConverter : MvxValueConverter<double, object> { ...

protected override object Convert(double value, Type targetType, object parameter, System.Globalization.CultureInfo culture) { ////
公共类承载图像转换器:MvxValueConverter{。。。
受保护的重写对象转换(双值,类型targetType,对象参数,System.Globalization.CultureInfo区域性){////

其中返回的对象是位图。

据我所知,您可以将字节数组绑定到ImageView,但不能将其加倍,这就是为什么会出现该警告的原因。我想这就是为什么您的自定义值转换器根本没有调用的原因。

正在调用值转换器。我希望我的绑定会读作“绑定使用字节数组,派生自双方向角,并使用BearingToImageConverter'转换为字节数组。
public class BearingToImageConverter : MvxValueConverter<double, object> { ...

protected override object Convert(double value, Type targetType, object parameter, System.Globalization.CultureInfo culture) { ////