SKSharp未加载位图Xamarin表单



我正在尝试加载"png的"使用Android和UWP项目在XamarinForms应用程序中的ListView中。

这是我的ListView的xaml。

<ListView x:Name="TemplateListView"
ItemsSource="{Binding TemplateData}">
<ListView.ItemTemplate>
<DataTemplate>
<StackLayout Orientation="Vertical">
<Image Margin="20,0,0,0" Source="{Binding ImageData}" Aspect="AspectFit" HeightRequest="120"></Image>
<Label Text="{Binding Title}"  FontSize="16" />
</StackLayout>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>

我的对象类是一个非常简单的类。

public class TemplateData
{
public string Title { get; set; }
public SKBitmap ImageData { get; set; }
}

这是SKSharp代码,用于加载位图并将其分配给集合作为ListViewsItemSource。

//load the image and assisgn it as an Item
this.TemplateListView.ItemsSource = new TemplateData[]
{
new TemplateData{Title="A", ImageData=LoadImage("A.jpg")},
new TemplateData{Title="B", ImageData=LoadImage("B.jpg")},

};

//对于这个代码图像需要是一个项目资源

private SKBitmap LoadImage(string filename)
{
//  string resourceID = filename;
string resourceID = "CWON_App.Images."+filename;
Assembly assembly = GetType().GetTypeInfo().Assembly;
using (Stream stream = assembly.GetManifestResourceStream(resourceID))
{
resourceBitmap = SKBitmap.Decode(stream);
}
return resourceBitmap;
}

我的图像在UWP项目的images文件夹中,并标记为Embedded Resource。

该应用程序运行时没有任何错误,但ListView中没有显示任何内容。

Xamarin图像控件无法加载SKBitmap,对于这种情况,我们建议您使用ImageSource来替换SKBitmap。

如果你已经将图像放在uwp项目文件夹中,你可以使用ImageSource.FromFile方法加载图像,请注意图像构建操作需要是Content

private ImageSource LoadImage(string filename)
{
var source = Device.RuntimePlatform == Device.UWP ? ImageSource.FromFile($"Assets/{filename}") : ImageSource.FromFile("waterfront.jpg");
return source;
}

有关更多信息,请参阅Xamarin使用图像。

我使用了本文档中显示的技术。

在此处输入链接描述

并删除了SKSharp库

最新更新