我有一个使用PCL的跨平台应用程序,您可以使用相机拍摄照片,图像保存到本地数据库(以后可以在其他地方同步)。该应用程序还会加载最后一个图像,并将其显示在屏幕上,并将源绑定到视图模型。
这在iOS上完美运行,但Android不会显示绑定图像。
我测试过我可以通过将Source设置为“icon.png”来显示android上的图像。
的Xaml
protected void Application_Error(object sender, EventArgs e)
{
Exception exception = Server.GetLastError();
//Log your exception here
Response.Clear();
string action= "Error";
// clear error on server
Server.ClearError();
Response.Redirect(String.Format("~/Error/{0}?message={1}", action, exception.Message));
}
视图模型
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<Image HorizontalOptions="FillAndExpand" VerticalOptions="FillAndExpand" Aspect="AspectFit" BackgroundColor="Green" Source="{Binding CameraImage}"/>
<Button Grid.Row="1" Text="Take Picture" Command="{Binding GetPhoto}"/>
</Grid>
结合
public void LoadLatestImage(object sender, EventArgs e)
{
var imageDBO = DatabaseHelpers.LocalDatabase.Table<ImageDBO>().OrderByDescending(i => i.DateCreated).FirstOrDefaultAsync().Result;
if (imageDBO != null)
{
CameraImage = ImageSource.FromStream(() => { return new MemoryStream(imageDBO.ImageData); });
}
}
请注意:我试图在Xamarin论坛和堆栈溢出上找到解决方案,但这里的类似问题并不相同,他们的解决方案似乎没有帮助。似乎大多数这些问题都是由访问本地资源引起的,但这不应该适用于此,因为我的源代码是直接来自咬合数组
答案 0 :(得分:1)
事实证明这是由于Android相机的图像产生的字节数组太大而无法绑定到视图(仅限android问题)。缩小图像尺寸/质量可以解决问题。