Exemplo n.º 1
0
        /// <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);
        }
Exemplo n.º 2
0
        /// <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);
        }
Exemplo n.º 3
0
        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);
        }