public async static Task< List<TreeViewModel>> SetTree(string topLevelName, bool IsCanSelect) { List<TreeViewModel> treeView = new List<TreeViewModel>(); TreeViewModel tv = new TreeViewModel(topLevelName, string.Empty, IsCanSelect); treeView.Add(tv); //Perform recursive method to build treeview #region Test Data //Doing this below for this example, you should do it dynamically //*************************************************** slSecure.Web.SecureDBContext db; db = slSecure.DB.GetDB(); var ERNameData = await db.LoadAsync<tblEngineRoomConfig>(db.GetTblEngineRoomConfigIncludeQuery()); string sERName, sReadCardName, sControlID; foreach (var tempERNameData in ERNameData) { sERName = tempERNameData.ERName; TreeViewModel tr_sERName = new TreeViewModel(sERName, string.Empty, IsCanSelect); if ((sERName != "泰山機房B1-UPS室") && (sERName != "龍潭堵機房") && (sERName != "觀音山機房")) { tv.Children.Add(tr_sERName); } foreach (var tempEntranceGuardData in tempERNameData.tblEntranceGuardConfig) { foreach (var tempControllerConfigData in tempERNameData.tblControllerConfig) { if ((bool)tempControllerConfigData.IsEnable) { if (tempControllerConfigData.EntranceCode == tempEntranceGuardData.EntranceCode && (tempControllerConfigData.ControlType == 1 || tempControllerConfigData.ControlType == 2)) { sControlID = tempControllerConfigData.ControlID; sReadCardName = tempEntranceGuardData.Memo; tr_sERName.Children.Add(new TreeViewModel(sReadCardName, tempControllerConfigData.ControlID, IsCanSelect)); } } } } } //*************************************************** #endregion tv.Initialize(); return treeView; }