如何在加载silverlight应用程序之前完成异步调用

如何在加载silverlight应用程序之前完成异步调用,silverlight,silverlight-4.0,Silverlight,Silverlight 4.0,我有一个使用WCF的silverlight应用程序,我想在加载usercontrol之前调用WCF来加载一些数据,这样我就可以在autocompletebox中使用这些数据。关于如何实现这一点有什么建议吗?您可以在App.xaml.cs文件的Application\u Startup()方法中执行异步调用,并在异步回调中设置RootVisual,而不是在Application\u Startup()您可以在Application\u Startup()中执行异步调用App.xaml.cs文件的方

我有一个使用WCF的silverlight应用程序,我想在加载usercontrol之前调用WCF来加载一些数据,这样我就可以在autocompletebox中使用这些数据。关于如何实现这一点有什么建议吗?

您可以在
App.xaml.cs
文件的
Application\u Startup()
方法中执行异步调用,并在异步回调中设置
RootVisual
,而不是在
Application\u Startup()
您可以在
Application\u Startup()中执行异步调用
App.xaml.cs
文件的方法,并在异步回调中设置
RootVisual
,而不是在
应用程序启动()中设置

不确定用户界面是否适合使用加载指示器或进度条。如果可以使用加载指示器,那么在异步调用进行时显示忙/加载指示器可能是一个不错的选择。这将禁止用户在从WCF服务检索数据时单击下拉列表或任何其他控件。

不确定您的用户界面是否适合使用加载指示器或进度条。如果可以使用加载指示器,那么在异步调用进行时显示忙/加载指示器可能是一个不错的选择。这将禁止用户在从WCF服务检索数据时单击下拉列表或任何其他控件。

Silverlight中的所有WCF服务调用都是异步的。我已经学会了使用Lambdas和一个非常有用的类(它是事件和委托的包装器)。 使用RobSiklos建议的应用程序启动将非常有助于在显示控件之前获得它。这显示了还可以在userControl loaded事件内部工作的代码,其中包含加载覆盖(可以使用带中心文本的边框覆盖整个应用程序或Silverlight toolkit控件)。这种方法将向用户提供更直接的反馈,特别是如果您的数据服务呼叫需要更长的时间

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
  }
 }
}

Silverlight中的所有WCF服务调用都是异步的。我已经学会了使用Lambdas和一个非常有用的类(它是事件和委托的包装器)。 使用RobSiklos建议的应用程序启动将非常有助于在显示控件之前获得它。这显示了还可以在userControl loaded事件内部工作的代码,其中包含加载覆盖(可以使用带中心文本的边框覆盖整个应用程序或Silverlight toolkit控件)。这种方法将向用户提供更直接的反馈,特别是如果您的数据服务呼叫需要更长的时间

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
  }
 }
}

使用此方法,如果我想将usercontrol上的autocompletebox连接到WCF调用返回的数据,我将如何做?usercontrol的实例还没有创建。使用此方法,如果我想将usercontrol上的autocompletebox连接到WCF调用返回的数据,我该怎么做?usercontrol的实例还没有创建,这种方法似乎最简单。我抛出了一个busyindicator并将其设置为true,运行异步调用,然后将busyindicator设置为false。正好适合我的需要。谢谢。这种方法似乎最简单。我抛出了一个busyindicator并将其设置为true,运行异步调用,然后将busyindicator设置为false。正好适合我的需要。谢谢