SKSharp 未加载位图 Xamarin Forms

SKSharp not loading Bitmap Xamarin Forms

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

这是我的 xaml ListView。

   <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>

我的对象class很简单

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 项目的 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 Working with image.

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

enter link description here

并删除了 SKSharp 库