/// <summary> /// 递归查找子菜单 /// </summary> /// <param name="child"></param> /// <param name="remindList"></param> /// <param name="userMenuIDs"></param> /// <returns></returns> private RadTreeViewItem Find(API.MenuInfo child, RadTreeViewItem parent) { var mm = from a in Store.MenuInfos where a.Parent == child.MenuID select a; //若该菜单为叶子节点 则判断菜单是否是有提醒 if (mm.Count() > 0) { foreach (var item in mm) { RadTreeViewItem rm = new RadTreeViewItem(); rm.Header = item.MenuName; rm.Tag = item.MenuID; rm = Find(item, rm); parent.Items.Add(rm); } } return(parent); }
/// <summary> /// 递归查找子菜单 /// </summary> /// <param name="child"></param> /// <param name="remindList"></param> /// <param name="userMenuIDs"></param> /// <returns></returns> private RadMenuItem Find(API.MenuInfo child, RadMenuItem parent) { var mm = from a in Store.MenuInfos where a.Parent == child.MenuID select a; //若该菜单为叶子节点 则判断菜单是否是有提醒 if (mm.Count() > 0) { foreach (var item in mm) { RadMenuItem rm = new RadMenuItem(); rm.Click += new Telerik.Windows.RadRoutedEventHandler(RadMenuItem_Click); rm.Header = item.MenuName; rm.Tag = item.ClassName; rm.Background = new SolidColorBrush(Colors.LightBlue); rm = Find(item, rm); parent.Items.Add(rm); } } return(parent); }
private RadTreeViewItem Find(API.MenuInfo child, List <int> menus) { var mm = from a in Store.MenuInfos where a.Parent == child.MenuID select a; //若该菜单为叶子节点 则判断菜单是否是有提醒 if (mm.Count() == 0) { RadTreeViewItem rad = new RadTreeViewItem(); rad.Header = child.MenuName; rad.DataContext = child; rad.Tag = child.MenuID; if (menus.Contains(child.MenuID)) { rad.IsChecked = true; rad.CheckState = System.Windows.Automation.ToggleState.On; } else { rad.IsChecked = false; rad.CheckState = System.Windows.Automation.ToggleState.Off; } return(rad); } RadTreeViewItem parent = new RadTreeViewItem(); //若该菜单不是叶子节点 则继续循环查找 foreach (var item in mm) { RadTreeViewItem obj = Find(item, menus); if (obj != null) { obj.Header = item.MenuName; obj.DataContext = item; obj.Tag = item.MenuID; parent.Items.Add(obj); } } //查找该父节点中的状态 int checkedCount = 0; System.Windows.Automation.ToggleState state = System.Windows.Automation.ToggleState.Off; foreach (var item in parent.Items) { RadTreeViewItem xxd = item as RadTreeViewItem; if (xxd.CheckState == System.Windows.Automation.ToggleState.Indeterminate) { state = System.Windows.Automation.ToggleState.Indeterminate; break; } if (xxd.IsChecked == true) { checkedCount++; } } if (state == System.Windows.Automation.ToggleState.Indeterminate) { parent.CheckState = System.Windows.Automation.ToggleState.Indeterminate; } else { if (checkedCount == 0) { parent.IsChecked = false; parent.CheckState = System.Windows.Automation.ToggleState.Off; } else if (checkedCount == parent.Items.Count) { parent.IsChecked = true; parent.CheckState = System.Windows.Automation.ToggleState.On; } else { parent.CheckState = System.Windows.Automation.ToggleState.Indeterminate; } } if (parent.Items.Count == 0) { return(null); } return(parent); }