我有一个ImageCell作为ListView的一部分,它应该显示通过数据绑定从ViewModel获取的页面的三条信息。
XAML:
<ListView x:Name="ScoreListView" ItemsSource="{Binding DBScores}"
IsPullToRefreshEnabled="True" RefreshCommand="{Binding RefreshScoresAsyncCommand}" IsRefreshing="{Binding IsBusy, Mode=OneWay}">
<ListView.ItemTemplate>
<DataTemplate>
<ImageCell
Text="{Binding DisplayName}"
Detail="{Binding Points}"
ImageSource="{Binding SyncImagePath}"/>
</DataTemplate>
</ListView.ItemTemplate>
C#
DBScores = new ObservableCollection<ScoresTable>();
...
var downloadedList = await App.AzureService.GetScores();
downloadedList = downloadedList.OrderByDescending(x => x.Points).ThenBy(x => x.DisplayName).ToList();
DBScores = new ObservableCollection<ScoresTable>();
foreach (ScoresTable element in downloadedList)
{
if(element.Synced == 0)
{
element.SyncImagePath = "notsynced.png";
}
else
{
element.SyncImagePath = "synced.png";
}
DBScores.Add(element);
}
...
public class ScoresTable
{
[JsonProperty("Id")]
public string Id { get; set; }
public string DisplayName { get; set;}
public int Points { get; set; }
public DateTime AchievedOn { get; set; }
public int Synced { get; set; }
public string Latitude { get; set; }
public string Longitude { get; set; }
[JsonIgnore]
public string SyncImagePath { get; set; }
}
DisplayName
和Points
的绑定工作正常。我将相关图像放置在Android项目的Resources/drawable
文件夹中,并将其添加到Visual Studio项目中。他们的名字拼写正确且大小写正确。当我从数据库加载图像时,我检查了它们的Synced
属性,并将图像路径设置为两个图像之一。 synced.png
或notsynced.png
我不知所措,因为这在我昨天回家时有效,现在却不行了。我曾尝试在VS中进行清理,然后手动删除bin和obj文件夹并重建项目。
编辑1;构建操作设置为AndroidResource
编辑2;我看到的是This
答案 0 :(得分:3)
从3.4.0.1008975降级为3.3.0.967583对其进行了修复。一定是新更新有问题或我未曾见过的某些变化。发行说明中没有提到对ImageCell的任何更改。
答案 1 :(得分:1)
我遇到了与您完全相同的问题,并且还通过从Xamarin.Forms 3.4.0.1008975还原到3.3.0.967583来解决了该问题。如您所述,发行说明中没有提到对ImageCell的任何更改。我向Xamarin.Forms GitHub页面提交了一个问题(并将此StackOverflow帖子用作参考,我希望这没问题。我不认为这是功劳)。
https://github.com/xamarin/Xamarin.Forms/issues/4584
编辑:他们确实承认这是一个错误,并且已将其修复,我发现(在撰写本文时)最新的稳定版本为v3.4.0.1009999。
答案 2 :(得分:0)
在使用Xamarin.Forms v4.4.0.x的ImageUrl中,存在与“ https:// ...”相同的问题。更新到最新的4.6.0.x,问题消失了,图像显示正确。