我使用以下代码段将图片网址绑定到图片对象(用作ViewCell对象中的一个元素)。
...
Image Picture = new Image()
{
Aspect = Aspect.AspectFit,
HorizontalOptions = LayoutOptions.StartAndExpand
}; // ImageSource.FromUri(new Uri("sImageUrl")))
Picture.SetBinding(Image.SourceProperty, "sImageUrl");
...
列表中我使用该单元格视图的图像不会始终加载。我无法确定问题的确切原因,但我认为问题是加载过程(用于从网址/互联网加载图像)..
也许问题可以通过新文件中描述的新Uri(...)设置网址来解决
var webImage = new Image { Aspect = Aspect.AspectFit };
webImage.Source = ImageSource.FromUri(new Uri("https://xamarin.com/content/images/pages/forms/example-app.png"));
现在我的问题:是否有绑定uri对象的解决方法? e.g。
...
Image Picture = new Image()
{
Aspect = Aspect.AspectFit,
HorizontalOptions = LayoutOptions.StartAndExpand
}; // ImageSource.FromUri(new Uri("sImageUrl")))
Picture.SetBinding(Image.SourceProperty, ImageSource.FromUri(new Uri("sImageUrl")));
...
我正在使用xamarin studio(版本6.1.2,版本44,更新频道" beta",os x)。
如果有人得到了tipp会很棒。
非常感谢,
亚历
答案 0 :(得分:0)
我做了什么:我实现了自己的类" AsyncSrcImage",从Image派生出来并添加了另一个可绑定属性:
public class AsyncSrcImage : Image
{
private static String sDefaultURL = "";
public static readonly BindableProperty AsyncImgUrlProperty = BindableProperty.Create(nameof(AsyncImgUrl), typeof(String), typeof(AsyncSrcImage), sDefaultURL);
public String AsyncImgUrl
{
get { return (String)GetValue(AsyncImgUrlProperty); }
set { SetValue(AsyncImgUrlProperty, value); }
}
}
此外,我使用自定义渲染器调整了渲染过程。我按照文档中的描述通过新的Uri(...)加载图像源:
using Xamarin.Forms.Platform.Android;
using Xamarin.Forms;
using System;
[assembly: ExportRenderer(typeof(AsyncSrcImage), typeof(AsyncSrcImageRenderer))]
public class AsyncSrcImageRenderer : ImageRenderer
{
protected override void OnElementChanged(ElementChangedEventArgs<Image> e)
{
base.OnElementChanged(e);
AsyncSrcImage oImage = (AsyncSrcImage)Element;
if (oImage != null && oImage.AsyncImgUrl != "")
{
oImage.Source = ImageSource.FromUri(new Uri(oImage.AsyncImgUrl));
}
}
}
也许这有助于其他人;)