【发布时间】:2016-04-24 18:25:41
【问题描述】:
当我尝试在 ViewModel 中绑定 ObservableCollection 时,我遇到了一个小错误。问题是它连接到一个 web api 来获取列表,但由于某种原因,它不够快。
我认为它与 async / await 有关,它不会在加载视图之前等待列表获取其数据。
代码:
public ObservableCollection<AvailableRoomModel> AvailableRooms { get; set; }
public ObservableCollection<AvailableRoomModel> List { get; set; }
AvailableRooms 是正确的列表,该列表仅用于测试。
public RoomsViewModel(IGetAvailableRoomsService getAvailableRoomsService)
{
//Injection
_getAvailableRoomsService = getAvailableRoomsService;
//Initialize
AvailableRooms = new ObservableCollection<AvailableRoomModel>();
//Get all rooms
GetAvailableRooms();
List = new ObservableCollection<AvailableRoomModel>();
List.Add(new AvailableRoomModel { Id = 1, RoomNumber = "101", Occupied = true });
List.Add(new AvailableRoomModel { Id = 2, RoomNumber = "102", Occupied = true });
List.Add(new AvailableRoomModel { Id = 3, RoomNumber = "103", Occupied = true });
}
public async void GetAvailableRooms()
{
try
{
AvailableRooms = await _getAvailableRoomsService.getRooms();
}
catch (Exception e)
{
//TODO
}
}
已经测试过,如果我将我的 ItemsControl 绑定到 name = List 的列表,它可以工作(它足够快),但在绑定到 AvailableRooms 时它不起作用。
我真的不希望在我可以点击的视图中有一个 searchCommand,只想在显示视图之前填充列表。
有什么想法吗?
【问题讨论】:
标签: c# wpf asynchronous mvvm