我目前正在开发一个项目,它有一个ViewModel,可以抓取一些信息并在.Droid视图中显示一些文本和一个函数,它抓取一个base64,将其转换为一个图像,然后将它放在一个ImageView中。布局,没什么大不了的。
布局的相同ViewModel获取一个对象列表,然后将这些对象放入一个MvxListView(扩展MvxViewModel的ListItem类),其中包含一个ListItem的相应布局,其中一些文本来自foreach循环中实例化时设置的变量,所有文本。 / p>
但是每个ListItem都需要显示服务器提供的base64字符串中的图像,就像前面提到的一张图片一样。现在我的问题是,为了将这个base64字符串转换为图像,我需要在.Droid视图中执行此操作,因为Android.Util包具有我需要执行此操作的Base64类。
我不清楚如何做到这一点,因为ImageView实例是以编程方式添加的ListItems的一部分,因此我不知道为每个ListItem ImageView分配了什么布局ID。所以我认为每个ListItem可能需要在父页面中拥有自己的.Droid视图.Droid查看它们所属的部分。然后每个ListItem .Droid View都可以获取,转换并将图像分配给它们的ImageView。
长话短说,我希望能够在ViewModel中将ViewModel及其相应的.Droid视图实例与其ListItem布局相关联。
那么在这里是否有人知道如何实现这一目标,如果有可能,或者我可以用另一种方式解决这个问题(希望更简单)?
位于主ViewModel中的ListItem类:
public class EventListItemViewModel : MvxViewModel
{
public Action LoadImageDelegate { get; set; }
private string eventTitle;
public string EventTitle
{
get { return eventTitle; }
set { eventTitle = value; RaisePropertyChanged(() => EventTitle); }
}
private string timeUntil;
public string TimeUntil
{
get { return timeUntil; }
set { timeUntil = value; RaisePropertyChanged(() => TimeUntil); }
}
private string imgUrl;
public string ImgUrl
{
get { return imgUrl; }
set {
imgUrl = value;
//LoadImageDelegate?.Invoke();
}
}
}
当前实例化ListItems的Foreach循环:
foreach (Event e in Events)
{
CompleteEventList.Add(new EventListItemViewModel { EventTitle = e.Name, TimeUntil = "0 h", ImgUrl = e.ImgUrl});
}