我有一个使用WCF的silverlight应用程序,我想在加载usercontrol之前进行WCF调用以加载一些数据,以便我可以将数据与自动完成框一起使用。有关如何实现这一目标的任何建议吗?
答案 0 :(得分:1)
不确定您的用户界面是否适合使用加载指示器或进度条。如果您可以使用加载指示器,那么在异步调用正在进行时显示忙/加载指示符可能是一个不错的选择。这将禁止用户在从WCF服务检索数据时单击下拉列表或任何其他控件。
答案 1 :(得分:0)
您可以在Application_Startup()
文件的App.xaml.cs
方法中执行异步调用,并在异步回调中设置RootVisual
,而不是Application_Startup()
。
答案 2 :(得分:0)
Silverlight中的所有WCF服务调用都是异步的。我学会了使用Lambdas和一个非常有用的类Action(它是事件和委托的包装器)。 使用RobSiklos建议的应用程序启动可以在显示控件之前获得它。这显示了代码也可以在userControl加载的事件中工作,包含加载覆盖(您可以使用带有居中文本的边框,遍历整个应用程序或Silverlight工具包控件)。这种方法可以为用户提供更直接的反馈,特别是如果您的数据服务呼叫需要更长的时间。
public MyUserControl : UserControl
{
public MyUserControl()
{
this.Loaded += new RoutedEventHandler(View_Loaded);
}
void View_Loaded(object sender, RoutedEventArgs e)
{
// start showing loading overlay
MyService service = new Service(...);
service.GetDataCompleted += (o, args) =>
{
var data = args.Results;
// hide loading overlay
}
}
}