android - SKSharp 未加载位图 Xamarin 表单
问题描述
我正在尝试使用 Android 和 UWP 项目将“png”加载到 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; }
}
这是加载位图并作为 ListViews ItemSource 分配给集合的 SKSharp 代码。
//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 使用图像。
推荐阅读
- vue.js - 我应该在 vue 中的每个组件上使用代码拆分吗?
- csv - 从 csv 读取并在 x 上绘制日期
- mysql - Hikari CP SSL 异常在接收对等方的 close_notify 之前关闭入站
- firebase - 如何使用 Flutter 从 Firestore 中的集合中获取特定文档
- javascript - React Styled 组件:如何根据 props 添加 css 样式?
- python - 如何从“onclick”属性值的括号中提取数据?
- android - 如何在 LocationListener 中创建通知
- php - 使用 MYSQLI while 循环运行带有 IF/ELSE 的 foreach 循环
- c++ - 在多线程环境中为类的每个实例赋予唯一标识符
- coq - 小于函数