Все вызовы службы WCF в Silverlight являются асинхронными.Я научился использовать Lambdas и очень полезный класс под названием Action (который является оберткой для события и делегата).Использование запуска приложения, как предложил РобСиклос, отлично подойдет для его получения, прежде чем показывать элемент управления.Здесь показан код, который также может работать внутри загруженного события 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
}
}
}