2

我有一个设置视图,我在其中使用 MT.D 来构建我的 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")
                }
4

1 回答 1

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;
        }
于 2013-03-08T02:23:41.353 回答