我有一个设置视图,我正在使用MT.D构建我的UI。我只是从数据库中读取元素以填充节中的元素。
我不知道该怎么做才能访问每个元素的属性或值。我想根据数据库中的值为每个项目设置不同背景颜色的元素。我还希望能够获取所选值,以便我可以在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 :(得分: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;
}