実行時にデータグリッドを使用して複数のユーザー コントロールを読み込んでいるナビゲーション ページがあります。ユーザーコントロールのこれらのデータグリッドは、明らかにWCFによってロードされます。親コントロールに BusyIndicator があり、BusyIndicator の IsBusy プロパティを false に設定できるように、ユーザー コントロールが WCF からのデータの読み込みを完了したかどうかを確認する必要があります。どうすればいいですか?
質問する
189 次
1 に答える
0
これは、コントロールのデータを取得するメソッドの非同期コールバックで行う必要があります。たとえば、ViewModel に次のコードがあるとします (これは動作するコードではありません... 単なる例です)。
private bool _inProgress = true;
public bool InProgress
{
get { return _inProgress; }
set
{
if (_inProgress != value)
{
_inProgress = value;
NotifyOfPropertyChange(() => InProgress);
}
}
}
public void GetData()
{
InProgress = true;
_wcfClient = myWCFDataClient;
_wcfClient.GetDataCompleted += _wcfClient_GetDataCompleted;
_wcfClient.GetDataAsync();
}
//Async callback
protected void _wcfClient_GetDataCompleted(object sender, MyCustomEventArgs e)
{
InProgress = false;
}
ビュー内の BusyIndicator は、ViewModel の InProgress プロパティにバインドする必要があります。複数のコントロールによって複数のメソッドが呼び出されている場合は、高度な非同期パターンを調べることができます。いくつかのアイデアについては、こちらの投稿を参照してください: C# 4 の適切な非同期ワークフロー パターンはありますか? . 使用している C# のバージョンが不明です。以前の投稿へのリンクは、バージョン 4.5 のリリース前のものでした。
于 2013-04-16T08:21:56.610 に答える