我的视图调用 ViewModel 中的一个方法来获取数据。获取数据后,我根据从 ViewModel 返回的数据构建我的视图(网格)。
View Model 中的 getData() 方法在 BackgroundWorker 线程中运行。现在我的问题是如何在 View 完成获取所有数据后返回 View ?
ViewModel
{
getData()
{
WorkerMethods()
WorkerCompletedMethod()
{
Refresh()
}
}
Refresh()
{
WorkerMethod()
WorkerCompleted()
{
data - Retrieved.
This is where all the calls are really DONE
}
}
}
从视图中,我会打电话给
View()
{
VM.getData()
//Before I call this method, I want to make sure Refresh() is completed
BuildUI()
}
我希望仅在 VM.getData() 完全执行之后才执行 BuildUI() 方法,然后使用 Refresh() 方法完成,这就是我需要能够动态构建 UI 的数据。
这就是我要做的。如果这不是正确的方法,请纠正我。
在后面的查看代码中,
View
{
public delegate void DelegateRefresh();
Init()
{
DelegateRefresh fetcher = RefreshData;
fetcher.BeginInvoke(null, null);
}
public void RefreshData()
{
_viewModel.GetData();
**while (_viewModel.IsBusy)**
{
continue;
}
BuildUI();
}
BuildUI()
{
//Code to build the UI Dynamically using the data from VM.
}