我有一堆方法可以在我的Windows 8.1运行时应用程序中加载数据。我正在使用MVVM Light 5.1.1.0。
我现在一直在努力弄清楚为什么样品,库存,项目都有工作测试服务以及为什么我永远无法让我的工作。事实证明,如果我删除了所有的DispatcherHelper调用,那么我的测试数据就会加载。
以下是我在View模型的Load方法中调用的众多内容之一的示例:
private async Task LoadDriverStatuses()
{
var driverStatuses = await this._driverService.GetDriverStatuses();
this.DriverStatuses = new ObservableCollection<DriverStatusVM>();
foreach (var status in driverStatuses)
{
var driverStatusVM = new DriverStatusVM
{
DriverStatusId = status.Id,
Name = status.Name
};
await DispatcherHelper.RunAsync(() =>
{
this.DriverStatuses.Add(driverStatusVM);
});
}
}
如果我在视图模型中的任何地方注释掉DispatcherHelper.RunAsync()/ CheckBeginInvokeOnUI()行,我的测试数据将加载到设计器中。不幸的是,应用程序只能正确地完全加载一次。一旦我尝试更改驱动程序状态,我就会得到一个“编组线程访问错误”#39;这是因为所有这些列表都是在不同的线程上创建的。
我想知道是否有一种快速解决方法,或者我是否需要继续使用&#39; if(this.IsInDesignMode)&#39;在我的视图中阻止模型构造函数并删除所有DispatcherHelper。