Xamarin MvvmCross:使用相应的.Droid视图查看视图模型中的模型?

时间:2017-01-11 08:59:24

标签: c# xamarin mvvmcross

我目前正在开发一个项目,它有一个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});
            }

0 个答案:

没有答案