0

我有一个导航页面,在其中我在运行时使用数据网格加载多个用户控件。用户控件中的这些数据网格显然由 WCF 加载。我在父控件中有一个 BusyIndi​​cator,需要确定用户控件是否已完成从 WCF 加载数据,以便我可以将 BusyIndi​​cator 的 IsBusy 属性设置为 false。我该怎么做呢?

4

1 回答 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;
}

视图中的 BusyIndi​​cator 需要绑定到 ViewModel 的 InProgress 属性。如果您有多个方法被多个控件调用,您可能需要查看一些高级异步模式。有关一些想法,请参阅我的帖子:C# 4 的任何好的异步工作流模式?. 不确定您使用的是什么版本的 C#。我上一篇文章的链接是在版本 4.5 发布之前。

于 2013-04-16T08:21:56.610 回答