using Prism.Mvvm;
using SqlHelp;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Data;
using System.Linq;
using System.Windows.Controls;
namespace WPFSale.ViewModels
{
public class MainWindowViewModel : BindableBase
{
private ObservableCollection<MenuItem> menus;
public ObservableCollection<MenuItem> MenuItems
{
get { return menus; }
set { SetProperty(ref menus, value); }
}
public MainWindowViewModel()
{
LoadMenus();
}
private void LoadMenus()
{
//读取菜单数据库数据
DataTable dataTable = Database.ExecSqlReturnDataTable("select * from Fun order by OrderID asc");
//加载1级菜单 FunID/ ClassName窗口名称
var FirstRows = from p in dataTable.AsEnumerable() where p.Field<string>("PFunID") == "0" select p;
List<MenuItem> Menu1Items = new List<MenuItem>();
foreach (var r in FirstRows)
{
MenuItem menuItem = new MenuItem();
menuItem.Name = "M" + r["FunID"].ToString() + "_" + r["ClassName"].ToString();
menuItem.RenderSize = new System.Windows.Size(130, 0x16);
menuItem.Header = r["FunName"].ToString();
AddChildMenu(menuItem, r["FunID"].ToString(), dataTable);//增加子菜单项
Menu1Items.Add(menuItem);
}
MenuItems=new ObservableCollection<MenuItem>( Menu1Items);
}
private void AddChildMenu(MenuItem item,string sfunID,DataTable dataTable)
{
var rs = from p in dataTable.AsEnumerable()
where p.Field<string>("PFunID") == sfunID select p;
foreach (var r in rs)
{
if (r.Field<string>("FunName") != "-")
{
MenuItem subItem = new MenuItem
{
Name = "M_" + r["FunID"].ToString() + "_" + r["ClassName"].ToString(),
RenderSize = new System.Windows.Size(130, 0x16),
Header = r["FunName"].ToString()
};
item.Items.Add(subItem);
AddChildMenu(subItem, r["FunID"].ToString(), dataTable);
}
else
{
Separator separator = new Separator { Name = "M_" + r.Field<int>("FunID").ToString() };
item.Items.Add(separator);
}
}
}
}
}