C# 如何在加载数据后显示Silverlight应用程序?

C# 如何在加载数据后显示Silverlight应用程序?,c#,silverlight,C#,Silverlight,我有一个SL应用程序,它从数据库中读取一些数据,这是通过WCF服务完成的。由于这种访问,我遇到了一些延迟问题,所以我通过将所有数据加载到我应用程序的字典中来解决。现在我想确保应用程序只有在我加载了所有这些信息后才会显示,我该怎么做?我原以为在数据加载之后放置InitializeComponents就足够了,但事实并非如此。以下是我的一些代码: public Brasil() { //InitializeComponent(); webService = new DataR

我有一个SL应用程序,它从数据库中读取一些数据,这是通过WCF服务完成的。由于这种访问,我遇到了一些延迟问题,所以我通过将所有数据加载到我应用程序的字典中来解决。现在我想确保应用程序只有在我加载了所有这些信息后才会显示,我该怎么做?我原以为在数据加载之后放置InitializeComponents就足够了,但事实并非如此。以下是我的一些代码:

 public Brasil()
 {
     //InitializeComponent();
     webService = new DataRetrieverReference.DataRetrieverClient();
     webService.GetCounterCompleted += new EventHandler<WebPortos.DataRetrieverReference.GetCounterCompletedEventArgs>(webService_GetCounterCompleted);
     webService.GetCounterAsync();
     webService.GetDataCompleted += new EventHandler<DataRetrieverReference.GetDataCompletedEventArgs>(webService_GetDataCompleted);

 }

 void webService_GetCounterCompleted(object sender, WebPortos.DataRetrieverReference.GetCounterCompletedEventArgs e)
 {
     int counter = e.Result;
     this.dictionary = new Dictionary<int, WebPortos.DataRetrieverReference.vwPortos_SEP>();

     for (int i = 0; i < counter; i++)
     {
         webService.GetDataAsync(i);
     }

     InitializeComponent();
 }
public Brasil()
{
//初始化组件();
webService=newDataRetrieverReference.DataRetrieverClient();
webService.GetCounterCompleted+=新事件处理程序(webService\u GetCounterCompleted);
GetCounterAsync();
webService.GetDataCompleted+=新事件处理程序(webService\u GetDataCompleted);
}
void webService_GetCounterCompleted(对象发送者,WebPortos.DataRetrieverReference.GetCounterCompletedEventArgs e)
{
int计数器=e.结果;
this.dictionary=新字典();
对于(int i=0;i

如您所见,我将其放在了数据加载方法中,但它不起作用。任何提示?

以任何方式延迟视图的创建都是不好的做法。在构造函数中保留InitializeComponent!:)

您要做的只是隐藏显示,直到数据准备就绪。最简单的方法(保持此示例的简单性)是从将页面上某个父元素的可见性设置为“折叠”开始,然后在加载数据后再次将其设置为“可见”


现实世界的解决方案包括在加载数据时使用忙指示器停止与特定区域/控件的交互。

查看您的代码,GetDataAsync正在对每组数据发出异步请求,然后执行InitializeComponent。因此,您需要将InitializeComponent调用延迟到触发所有GetDataCompleted回调并检索所有数据之后。

问题在于,这是一个真实的解决方案。。。我会在最后期限后修好的。那为什么不使用公交指示灯呢?只需将所有内容放在一个文件中,并设置IsBusy属性来控制它。欢呼