我想用MVVM Light將數據綁定到網格。如果我做了以下工作原理:MVVM Light的異步綁定問題
public class GuidePageViewModel : ViewModelBase
{
private ObservableCollection<SimpleChannelData> _simpleChannelDataList;
private IChannelDataService _channelDataService;
public GuidePageViewModel(IChannelDataService channelDataService)
{
_channelDataService = channelDataService;
ATest(); // Create data synchronously here
}
private void ATest()
{
SimpleChannelDataList = new ObservableCollection<SimpleChannelData>();
var record = new SimpleChannelData()
{
Cn = 120,
Csign = "Hey",
Hd = "Y",
Index = 1,
Premium = "y",
TrbId = 9
};
SimpleChannelDataList.Add(record);
}
private async void Start()
{
await LoadChannelData();
}
private async Task LoadChannelData()
{
SimpleChannelDataList = new ObservableCollection<SimpleChannelData>((await _channelDataService.GetChannelData()));
RaisePropertyChanged(() => SimpleChannelDataList);
}
#region Public Properties
public ObservableCollection<SimpleChannelData> SimpleChannelDataList
{
get
{
return _simpleChannelDataList;
}
set
{
if (Set(() => SimpleChannelDataList, ref _simpleChannelDataList, value))
{
RaisePropertyChanged(() => SimpleChannelDataList);
}
}
}
#endregion
}
現在,如果我改變的構造,而不是下面,使用異步調用Start
,電網沒有得到數據:
public GuidePageViewModel(IChannelDataService channelDataService)
{
_channelDataService = channelDataService;
Start();
}
我知道這是某種異步問題,但我無法弄清楚。有人能指出我做錯了什麼嗎?
我無法重現您的問題。從同步方法調用'async void'方法應該可以正常工作(雖然很危險)。你能提供一個我們可以運行的[minimal example](http://stackoverflow.com/help/mcve)嗎? – poke 2015-03-31 06:44:06