我有一个导航页面,在其中我在运行时使用数据网格加载多个用户控件。用户控件中的这些数据网格显然由 WCF 加载。我在父控件中有一个 BusyIndicator,需要确定用户控件是否已完成从 WCF 加载数据,以便我可以将 BusyIndicator 的 IsBusy 属性设置为 false。我该怎么做呢?
问问题
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 回答