My View は ViewModel のメソッドを呼び出してデータをフェッチします。データをフェッチした後、ViewModel から返されたデータに基づいて View(Grid) を構築します。
ビュー モデルの 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()
}
BuildUI() メソッドは、VM.getData() が完全に実行された後にのみ実行され、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.
}