static void getTreeNode(TreeViewModel tv, List<string> list) { if (tv.Children == null || tv.Children.Count == 0) { if (tv.IsChecked.HasValue && tv.IsChecked.Value) { list.Add(tv.ID); } } else { foreach (TreeViewModel subtv in tv.Children) { getTreeNode(subtv, list); } } }
public static List<string> GetTree(TreeViewModel tv) { List<string> selected = new List<string>(); getTreeNode(tv, selected); //select = recursive method to check each tree view item for selection (if required) return selected; //*********************************************************** //From your window capture selected your treeview control like: TreeViewModel root = (TreeViewModel)TreeViewControl.Items[0]; // List<string> selected = new List<string>(TreeViewModel.GetTree()); //*********************************************************** }
public static void SetTree(TreeViewModel tv, List<string> IDList) { if (tv.Children == null || tv.Children.Count == 0) { tv.IsChecked = IDList.Contains(tv.ID); } else { foreach (TreeViewModel subTv in tv.Children) { bool CanSelect = subTv.IsCanSelect; subTv.IsCanSelect = tv.IsCanSelect; SetTree(subTv, IDList); subTv.IsCanSelect = CanSelect; } } }
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; }