2025-04-01 13:41:50 +08:00

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);
}
}
}
}
}