我有一个导航页面,我在运行时使用datagrids加载多个用户控件。用户控件中的这些数据网格显然由WCF加载。我在Parent控件中有一个BusyIndicator,需要查看usercontrols是否已经完成从WCF加载数据,以便我可以将BusyIndicator的IsBusy属性设置为false。 我该怎么做?
答案 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;
}
视图中的BusyIndicator需要绑定到ViewModel的InProgress属性。如果您有多个控件调用多个方法,您可能需要查看一些高级异步模式。请在此处查看我的帖子,了解一些想法:Any good async workflow patterns for C# 4?。不确定您使用的是哪个版本的C#。我之前发布的帖子的链接是在4.5版本发布之前。