在练习的时候,我遇到个问题,具体描述如下,麻烦大家帮忙看看如何解决?
实体类Model如下:
using Prism.Mvvm;
using System.Collections.Generic;
namespace HY.Client.MainModule.Models
{
public class TreeMenuModel : BindableBase
{
public string TreeMenuIcon { get; set; }
public string TreeMenuHeader { get; set; }
public string TargetView { get; set; }
private bool isExpanded;
public bool IsExpanded
{
get => isExpanded;
set => SetProperty(ref isExpanded, value);
}
public List<TreeMenuModel> Children { get; set; }
}
}
以下ViewModel中出现报错:
1、构造函数内的 **this.FillMenus(TreeMenus, 0);**,提示:无法从“HY.Client.MainModule.Models.TreeMenuModel”转换为“System.Collections.Generic.List<HY.Client.MainModule.Models.TreeMenuModel>” ;
2、ViewModel中因为TreeMenus是属性而不是List类型,因此倒数第二行的**TreeMenus.Add(model);**也报错,无Add()方法
using HY.Client.Entity;
using HY.Client.MainModule.Models;
using Prism.Commands;
using Prism.Mvvm;
using Prism.Regions;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Input;
namespace HY.Client.MainModule.ViewModels
{
public class TreeMenuViewModel : BindableBase
{
private TreeMenuModel treeMenus;
public TreeMenuModel TreeMenus
{
get => treeMenus;
set => SetProperty(ref treeMenus, value);
}
//列表数据通过递归转为树形结构
private List<TreeMenuEntity> origMenus = null;
private IRegionManager _regionManager;
public TreeMenuViewModel(IRegionManager regionManager)
{
TreeMenus = new TreeMenuModel();
_regionManager = regionManager;
origMenus = GlobalEntity.CurrentUserInfo.Menus;
this.FillMenus(TreeMenus, 0);
}
///
/// 递归把树菜单表转为树结构
///
private void FillMenus(List<TreeMenuModel> menus, int parentId)
{
var sub = origMenus.Where(m => m.ParentId == parentId); //.OrderBy(o => o.Index)
if (sub.Count() > 0)
{
foreach (var item in sub)
{
TreeMenuModel model = new TreeMenuModel()
{
TreeMenuHeader = item.TreeMenuHeader,
TreeMenuIcon = item.TreeMenuIcon,
TargetView = item.TargetView
};
TreeMenus.Add(model);
FillMenus(model.Children = new List<TreeMenuModel>(), item.TreeMenuId);
}
}
}
}
}