如何解决SKSharp未加载位图Xamarin表单
我正在尝试使用Android和UWP项目在XamarinForms应用程序的ListView中加载“ png”。
这是我对ListView的xaml。
<ListView x:Name="TemplateListView"
ItemsSource="{Binding TemplateData}">
<ListView.ItemTemplate>
<DataTemplate>
<StackLayout Orientation="Vertical">
<Image Margin="20,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代码,用于加载位图并作为ListViews ItemSource分配给集合。
//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项目的“图像”文件夹中,并标记为“嵌入式资源”。
该应用程序运行没有错误,但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 Working with image。
,我使用了本文档中显示的技术。
并删除了SKSharp库
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。