我想要在ListView中创建一个自定义ViewCell,就像我以前做过很多次一样。但是,这是我第一次需要在自定义ViewCell中使用图像而我无法使其工作。
所以我有我的模特:
public class AttendedMeeting
{
public string Title { get; set; }
public string Date { get; set; }
public string Status { get; set; }
public Image MeetingImage { get; set;}
}
在我的自定义ViewCell中:
Label titleLabel = new Label();
titleLabel.SetBinding(Label.TextProperty, "Title");
Label dateLabel = new Label();
dateLabel.SetBinding(Label.TextProperty, "Date");
Label statusLabel = new Label();
statusLabel.SetBinding(Label.TextProperty, "Status");
Image meetingImage = new Image();
meetingImage.SetBinding(Image.SourceProperty, "MeetingImage");
然后在我的页面中,我填充了一个像这样的对象列表:
ListView meetingsListView = new ListView();
Image imageCheck = new Image();
imageCheck.Source = "Check.png";
Image imageLine = new Image();
imageLine.Source = "Line.png";
Image imageCircle = new Image();
imageCircle.Source = "Circle.png";
meetingsListView.ItemsSource = new AttendedMeeting[] {
new AttendedMeeting {Title = "Meeting 1",
Date="Monday - May 16th 2016",
Status="Verified",
MeetingImage=imageCheck
},
new AttendedMeeting {Title = "Meeting 2",
Date="Monday - May 16th 2016",
Status="Verified",
MeetingImage=imageLine
},
new AttendedMeeting {Title = "Meeting 3",
Date="Monday - May 16th 2016",
Status="Verified",
MeetingImage=imageCheck
},
new AttendedMeeting {Title = "Meeting 4",
Date="Monday - May 16th 2016",
Status="Verified",
MeetingImage=imageCheck
}
};
meetingsListView.ItemTemplate = new DataTemplate(typeof(CellMeetingsAttended));
除了图像外,一切都很棒。标签填充得很好,但每个项目的图像始终为空白。谁能告诉我我做错了什么?我也尝试在模型中使用字符串而不是Image()并使用字符串设置图像源,但也没有运气。我已经验证了资源是否正确,我可以将它们显示为ListView之外的图像。
提前致谢。
答案 0 :(得分:2)
你的问题是,当你想要一个字符串时,你试图直接绑定完整的Image对象(这是有意吗?),试试这个:
new AttendedMeeting[]
{
new AttendedMeeting
{
Title = "Meeting 1",
Date = "Monday - May 16th 2016",
Status = "Verified",
MeetingImage = "Line.png"; //--Try this!
},...
在你的模特中:
public class AttendedMeeting
{
public string Title { get; set; }
public string Date { get; set; }
public string Status { get; set; }
//Change this:
public string MeetingImage { get; set;}
}