2013-02-14 1 views
2

У меня есть настройки, где я использую MT.D для создания моего пользовательского интерфейса. Я просто получил его для чтения элементов из базы данных, чтобы заполнить элементы в разделе.Monotouch.Dialog Создать из db и сохранить значения

Что я не знаю, как это сделать, это получить доступ к свойствам или значениям каждого элемента. Я хочу стилизовать элемент с другим цветом фона для каждого элемента на основе его значения в базе данных. Я также хочу, чтобы иметь возможность получить выбранное значение, чтобы я мог обновить его в db. Вот рендеринг кода, который делает материал UI с MT.D. Я могу заставить значения отображаться и выдвигаться, как их предполагалось ... но, стиляя или добавляя делегаты к ним для обработки кликов, я теряюсь.

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

Я понял это довольно элегантно. Мне нравится больше, чем пример «Advanced Editing» в «MT.D' Framework». – BRogers

ответ

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

 Смежные вопросы

  • Нет связанных вопросов^_^