这是一个Xamarin应用程序,我试图在Init中调用一个异步方法,该方法是在FreshMVVM中实现的,但似乎不起作用。
当我加载页面时,ListView是空的,尽管绑定是正确的。事实上,如果我删除放置一些int常量的等待调用,ListView就会正确显示。
public class MainPageModel : BasePageModel
{
private IService _service;
public List<ModeMenuItem> List { get; set; }
public MainPageModel(IService Service)
{
_service = Service;
}
public override async void Init(object initData)
{
base.Init(initData);
List = new List<ModeMenuItem>()
{
new ModeMenuItem()
{
Name ="Test 1",
Image ="\uE7EE",
ViewModelType =null,
TotalRequests = await _service.Count()
},
new ModeMenuItem()
{
Name ="Test 2",
Image ="\uE913",
ViewModelType =null,
TotalRequests =await _service.Count()
},
new ModeMenuItem()
{
Name ="Test 3",
Image ="\uE8CF",
ViewModelType =null
}
};
}
}发布于 2017-09-15 12:07:33
由于要延迟向ListView提供的数据的填充和初始化,所以需要:
INotifyPropertyChanged上实现ViewModel,并在创建List属性时启动它。List成为一个ObservableCollection,并在ViewModel的构造函数中实例化它,然后在稍后的某个时候填充它。你也可以把两者混合在一起。
因此,选项1将只引发PropertyChanged事件:
private List<ModeMenuItem> _list;
public List<ModeMenuItem> List
{
get => _list;
set
{
_list = value;
RaisePropertyChanged();
}
}备选案文2将是:
public ObservableCollection<ModeMenuItem> List { get; }
= new ObservableCollection<ModeMenuItem>();然后在没有新的收藏的情况下把它插进去:
List.Add();https://stackoverflow.com/questions/46238853
复制相似问题