У меня есть модель представления со свойством изображения типа byte []. У меня есть представление с элементом изображения типа Windows .UI.Xaml.Controls.Image В коде моего представления я хочу привязать свойство изображения viewmodel к изображению представления.
Код, который У меня есть следующее:
this.WhenActivated(disposables =>
{
this.OneWayBind(ViewModel, vm => vm.Image2, v => v.Image.Source, async (bytes) => await ConvertAsync(bytes))
.DisposeWith(disposables);
});
Это приводит к ошибке: Невозможно преобразовать лямбда-выражение в тип «объект», потому что это не тип делегата . Преобразователь имеет следующий вид:
static async Task<BitmapImage> ConvertAsync(byte[] bytes)
{
using (var stream = new MemoryStream(bytes))
using (var randomAccessStream = stream.AsRandomAccessStream())
{
var bitmapImage = new BitmapImage
{
DecodePixelHeight = 100,
DecodePixelWidth = 100
};
await bitmapImage.SetSourceAsync(randomAccessStream);
return bitmapImage;
}
}
Обратите внимание, что использование bitmapImage.SetSource и синхронный метод метода не вариант, потому что он вешает поток пользовательского интерфейса. Если это не может быть достигнуто с помощью конвертера, каково ваше рекомендуемое решение? Конечно, я могу изменить тип в viewmodel, но это зависит от платформы UWP. Которого я бы предпочел не иметь.