Android SKSharp未加载位图Xamarin表单

Android SKSharp未加载位图Xamarin表单,android,xamarin.forms,uwp,skshapenode,Android,Xamarin.forms,Uwp,Skshapenode,我正在尝试使用Android和UWP项目将“png”加载到XamarinForms应用程序的列表视图中 这是我的ListView的xaml <ListView x:Name="TemplateListView" ItemsSource="{Binding TemplateData}"> <ListView.ItemTemplate>

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

这是我的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>
下面是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文件夹中,并标记为嵌入式资源


应用程序运行时没有错误,但列表视图中没有显示任何内容。

Xamarin image control无法加载SKBitmap,对于这种情况,我们建议您使用ImageSource替换SKBitmap

   <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>
如果已将图像放置在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;
}

有关更多信息,请参阅。

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


并删除了SKSharp库

如果您只是在图像控件中显示JPG,则只需提供图像名称即可。您不需要手动解码位图。阅读文档-Xamarin图像控件无法加载
SKBitmap