木木同学578 2023-03-27 22:49 采纳率: 25%
浏览 21
已结题

Model转为List<>问题


在练习的时候,我遇到个问题,具体描述如下,麻烦大家帮忙看看如何解决?

实体类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);
                }
            }
        }
    }
}

  • 写回答

1条回答 默认 最新

  • threenewbee 2023-03-27 22:59
    关注

    FillMenus(model.Children = new List(), item.TreeMenuId);

    这里,你传入的第一个参数,怎么是一条语句,你想干嘛

    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 1月12日
  • 创建了问题 3月27日

悬赏问题

  • ¥15 在国外文献网站里点击view pdf 加载异常缓慢甚至加载不出来。
  • ¥50 python批量提取发票的信息
  • ¥15 mysql安装,初始化数据库失败
  • ¥15 虚幻五引擎内容如何上传至网盘?
  • ¥15 使用mmpose库时出现了问题
  • ¥15 IRI2016模型matlab运行报错
  • ¥50 bat怎么设置电脑后台自动点击网页指定词运行脚本,输入指定网页链接,指定点击词,指定间隔时间,指定网页出现的词,指定网页出现词出现后后点击锁定,放在后台运行不影响前台鼠标工作
  • ¥20 20CrMnMo的高温变形抗力
  • ¥15 RTX3.6 5565驱动中断报错
  • ¥50 带防重放token(Antireplay-Token)的网站怎么用Python发送请求