54 lines
1.5 KiB
C#
54 lines
1.5 KiB
C#
using Prism.Regions;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using RIZO.Client.Entity;
|
|
using RIZO.Client.MainModule.Models;
|
|
|
|
namespace RIZO.Client.MainModule.ViewModels
|
|
{
|
|
public class TreeMenuViewModel
|
|
{
|
|
public List<MenuItemModel> Menus { get; set; } = new List<MenuItemModel>();
|
|
|
|
// 列表,没有树型结构
|
|
private List<MenuEntity> origMenus = null;
|
|
|
|
|
|
IRegionManager _regionManager;
|
|
public TreeMenuViewModel(IRegionManager regionManager)
|
|
{
|
|
_regionManager = regionManager;
|
|
// 需要获取菜单数据
|
|
origMenus = GlobalEntity.CurrentUserInfo?.Menus;
|
|
|
|
this.FillMenus(Menus, 0);
|
|
}
|
|
|
|
|
|
///递归
|
|
///
|
|
private void FillMenus(List<MenuItemModel> menus, int parentId)
|
|
{
|
|
if (origMenus == null)
|
|
return ;
|
|
var sub = origMenus.Where(m => m.ParentId == parentId).OrderBy(o => o.Index);
|
|
|
|
if (sub.Count() > 0)
|
|
{
|
|
foreach (var item in sub)
|
|
{
|
|
MenuItemModel mm = new MenuItemModel(_regionManager)
|
|
{
|
|
MenuHeader = item.MenuHeader,
|
|
MenuIcon = item.MenuIcon,
|
|
TargetView = item.TargetView
|
|
};
|
|
menus.Add(mm);
|
|
|
|
FillMenus(mm.Children = new List<MenuItemModel>(), item.MenuId);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|