続いて受信される前に、ビューがロードされてばかりは私のViewModelクラスです:データが非同期
public partial class DosAdminProductHierarchy : UserControl, INotifyPropertyChanged
{
public DosAdminProductHierarchy()
{
InitializeComponent();
this.GetProductList();
//this.ProductList = new NotifyTaskCompletion<List<Product>>(this.GetProductList());
OnPropertyChanged("DepartmentList");
if(isDataLoaded)
{
treeList.ItemsSource = ProductList;
treeList.Visibility = Visibility.Visible;
}
}
private ObservableCollection<Product> dbProductList;
private bool isDataLoaded = false;
public ObservableCollection<Product> ProductList
{
get
{
return dbProductList;
}
private set
{
dbProductList = value;
isDataLoaded = true;
}
}
private async void GetProductList()
{
try
{
IWebApiDataAdapter _webAPIDataAdapter = new DosAdminDataAdapter();
List<Product> lstProd= new List<Product>();
lstProd = await _webAPIDataAdapter.GetProductHierarchy();
dbProductList = new ObservableCollection<Product>();
foreach (Product prd in lstProd)
{
dbProductList.Add(prd);
}
}
catch (Exception ex)
{
throw (ex);
}
}
}
私の問題私はProductListが移入されるにしたいされていますが、人口取得されていません。データがWebApiから返されていなくても、実行はコンストラクタの終わりまで達しています。何とか実行を保持したり、ProductListがポピュレートされるまでビジー状態のユーザーを表示したりします。それを達成する方法を手伝ってください。
クライアントに何かを示すプログレスバーを使用します。 –
私はそれをやろうとしましたが、始めから100%になっています。私はスレッドを制御することができません。 –
'GetProduct'メソッドが' async'を呼び出すこのことを試してみてください。 [ProgressBar](http://www.wpf-tutorial.com/misc-controls/the-progressbar-control/)、[Async](https://msdn.microsoft.com/en-us/library/mt674882) aspx) –