2013-02-14 44 views
2

我有一個設置視圖,我正在使用MT.D構建我的UI。我只是從數據庫中讀取元素來填充節中的元素。Monotouch.Dialog從db生成並保留值

我不知道該怎麼做是訪問每個元素的屬性或值。我想根據數據庫中的值爲每個項目設置不同背景顏色的元素。我也希望能夠獲得選定的值,以便我可以在數據庫中更新它。這裏是代碼的渲染,用MT.D做UI的東西。我可以將值顯示出來並像他們應該的那樣滑出...但是,設計或添加代表來處理我丟失的點擊。

List<StyledStringElement> clientTypes = SettingsController.GetClientTypes(); 

     public SettingsiPhoneView() : base (new RootElement("Home"), true) 
     { 
      Root = new RootElement("Settings") { 
       new Section ("Types") { 
        new RootElement ("Types") { 
         new Section ("Client Types") { 
          from ct in clientTypes 
           select (Element) ct 
         } 
        }, 
        new StringElement ("Other Types") 
       } 
+0

我想出了一個非常優雅的方式。我比'MT.D'框架中的'高級編輯'例子更喜歡它。 – BRogers 2013-02-15 17:45:38

回答

0

下面是我如何處理它。基本上你必須在foreach循環中創建元素,然後用你想在那裏做的任何事情填充委託。像這樣:

public static List<StyledStringElement> GetClientTypesAsElement() 
     { 
      List<ClientType> clientTypes = new List<ClientType>(); 
      List<StyledStringElement> ctStringElements = new List<StyledStringElement>(); 

      using (var db = new SQLite.SQLiteConnection(Database.db)) { 
       var query = db.Table<ClientType>().Where (ct => ct.IsActive == true && ct.Description != "Default"); 

       foreach (ClientType ct in query) 
        clientTypes.Add (ct); 
      } 

      foreach (ClientType ct in clientTypes) { 
       // Build RGB values from the hex stored in the db (Hex example : #0E40BF) 
       UIColor bgColor = UIColor.Clear.FromHexString(ct.Color, 1.0f); 
       var localRef = ct; 
       StyledStringElement element = new StyledStringElement(ct.Type, delegate { 
        ClientTypeView.EditClientTypeView(localRef.Type, localRef.ClientTypeId); 
       }); 

       element.BackgroundColor = bgColor; 
       ctStringElements.Add (element); 
      } 

      return ctStringElements; 
     } 
+0

沒有真正的需要這是靜態的。只是不想在測試時實例化。 – BRogers 2013-03-08 02:24:32