了解用户控件是否已完成加载Silverlight 4中的数据

时间:2013-04-16 04:08:19

标签: wpf silverlight

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

1 个答案:

答案 0 :(得分: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属性。如果您有多个控件调用多个方法,您可能需要查看一些高级异步模式。请在此处查看我的帖子,了解一些想法:Any good async workflow patterns for C# 4?。不确定您使用的是哪个版本的C#。我之前发布的帖子的链接是在4.5版本发布之前。