2011-02-15 50 views
1

我試圖從數據庫中檢索字符串,它加載之前它作爲內容添加到控制我的網頁上(有點像一個自定義的本地化)銀色的光控制。我從數據庫中檢索uing RIA服務我的琴絃如下:將內容添加到數據庫中,從使用WCF RIA服務

**

Web.DomainService1 context = new Web.DomainService1(); 

LoadOperation<Web.LocalizationTab>LoadOp=context.Load(context.GetLocalizationTabsQuery(currentCulture, moduleName)); 

Dictionary<string, string> localizationDictonary = new Dictionary<string, string>(); 

     List<Web.LocalizationTab> localList = new List<Web.LocalizationTab>(); 

     LoadOp.Completed += (s, e) => 
     { 
      localList = LoadOp.Entities.ToList<Web.LocalizationTab>(); 

      //System.Windows.MessageBox.Show(localList.Count.ToString()); 
      foreach (Web.LocalizationTab item in localList) 
      { 
       // var control = this.FindName(item.Control_ID.ToString()); 
       if (!localizationDictonary.ContainsKey(item.Control_ID)) 
       { 
        localizationDictonary.Add(item.Control_ID, item.Control_Text); 
       } 
      } 

     };** 

這段代碼是在一個單獨的類名爲utilities.cs。 現在我在MainPage.xaml.cs中,我需要得到這個字典,值,然後從詞典中的字符串設定的控制。 我的問題是,當我做在MainPage.xaml.cs中的構造函數如下:

utilities.getDict(ModuleName); 

button1.Content = localizationDictonary["button1"].ToString(); 

我得到一個異常的字典裏面沒有包括在該時間點。該加載完成,獲得的事件值來自數據庫的數據只有在我的構造函數退出後纔會被觸發。現在我怎麼去在這個特定的場景中自動設置我的控件?

回答

1

嘗試加載你的字典中的Silverlight應用程序StartUp event類。這應該確保你的字典被加載(並且可以被放置在應用程序資源中用於在應用程序中的其他地方進行檢索)。

0

在實例化MainPage之前,您需要等待GetLocalizationTabsQuery完成。在您的App.xaml.cs文件中,您可以啓動查詢,添加查詢完成處理程序,並且只在查詢完成處理程序被調用時才創建MainPage。