2011-11-30 49 views
1

之前完成異步調用我有一個使用WCF Silverlight應用程序,我想作一個WCF調用之前用戶控件加載,這樣我可以有autocompletebox使用數據加載一些數據。有關如何完成此任務的任何建議?如何加載Silverlight應用程序

回答

1

不知道你的用戶界面將是適合使用的加載指示器或進度條。如果您可以使用加載指示符,那麼在異步調用進行時顯示忙/加載指示符可能是一個很好的選擇。這將禁止用戶在從WCF服務中檢索數據時單擊下拉列表或任何其他控件。

+0

這種方法似乎最簡單。我扔了一個busyindicator並將其設置爲true,運行異步調用,並將busyindicator設置爲false。爲我的需求工作得很好。謝謝。 – John

0

您可以在App.xaml.cs文件的Application_Startup()方法中執行異步調用,並在異步回調中設置RootVisual而不是在Application_Startup()中執行異步調用。

+0

使用這種方法,如果我想將我的自動完成框在我的usercontrol上掛接到從WCF調用返回的數據,我該怎麼做?用戶控件的實例尚未創建。 – John

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 
    } 
} 
} 
相關問題