我有一个base64图像,我已将其转换为“Imagesource”格式,如下所示。
imageName = Convert.ToString (output.d.XIMAGE);
byte[] data = Convert.FromBase64String (imageName);
guestsignature.Add (new guestSignature (ImageSource.FromStream (() => new MemoryStream (data))));
guestsignature是一个bean对象,我使用构造函数创建如下。
public class guestSignature
{
public ImageSource guestSignatureBase64{ get; private set; }
public guestSignature (ImageSource signature)
{
guestSignatureBase64 = signature;
}
}
我创建了一个列表视图来添加如下图像。
<ListView x:Name="GuestSignatureList" RowHeight="100" SeparatorVisibility="Default" BackgroundColor="Transparent">
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>
<StackLayout Padding="10,10,0,0" Orientation="Vertical" HorizontalOptions="FillAndExpand" VerticalOptions="FillAndExpand">
<Image WidthRequest="500" HeightRequest="500" Source="{Binding guestSignatureBase64}">
</Image>
</StackLayout>
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
然后我将访客详细信息对象添加到列表中。
GuestSignatureList.ItemsSource = guestsignature;
问题在于,即使正在设置图像源,图像也不会显示在列表视图中。这可能是什么问题?拜托,有人帮忙。
答案 0 :(得分:0)
在guestSignature中添加一个字符串,并尝试在单元格中显示该字符串,以查看它是否是绑定问题或图像显示问题。
答案 1 :(得分:0)
首先,我建议创建自定义 ORDER BY CASE first_name WHEN 'Jhon' THEN 1 END, last_name, first_name
以将Base64字符串转换为IValueConverter
,这对于您的所有应用程序都是可重用的。它很简单 - 对于给定的Base64字符串,它返回ImageSource
ImageSource
在你的xaml中,将新创建的转换器添加到public class Base64ToImageSourceConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
//Try to read value as string and convert it to ImageSource using streams
//If the operation fails for some reason, return null.
try
{
var image = value.ToString();
if (image == null)
return null;
byte[] data = System.Convert.FromBase64String(image);
var imageSource = ImageSource.FromStream(() => new MemoryStream(data));
return imageSource;
}
catch
{
return null;
}
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
并使用转换器绑定到Base64编码的Image属性。
ResourceDictionary
我已经在iOS和Android上对该示例进行了测试,但它确实有效。 如果它不适合您,请确保您的Base64字符串正确无误。您可以使用THIS ONE等工具在线测试。
您可以找到完整的Base64Sample项目HERE。