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

,

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

enter link description here

并删除了SKSharp库