WPF+通过配置文件生成菜单(Menu)+源码
public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); this.Loaded += new RoutedEventHandler(MainWindow_Loaded); } void MainWindow_Loaded(object sender, RoutedEventArgs e) { //加载菜单! if (BaseLogic.GetInstanse().MenuList != null && BaseLogic.GetInstanse().MenuList.Count > 0) { BindMenu(0, null); } } private void BindMenu(int parentId, MenuItem item) { List<MenuItemInfo> list = BaseLogic.GetInstanse().MenuList.FindAll(p => p.ParentMenuId == parentId); if (list != null && list.Count > 0) { foreach (MenuItemInfo info in list) { MenuItem menuItem = new MenuItem(); menuItem.Name = info.Name; menuItem.Header = info.HeaderText; menuItem.Tag = info; menuItem.Click += new RoutedEventHandler(menuItem_Click); if (parentId == 0) { this.MainMenu.Items.Add(menuItem); } else { item.Items.Add(menuItem); } BindMenu(info.MenuId, menuItem); } } } private void menuItem_Click(object sender, RoutedEventArgs e) { MenuItem item = sender as MenuItem; string menuName = ((MenuItemInfo)(item.Tag)).MenuName; //string fullName = menuName; //MenuBase menuBase = System.Reflection.Assembly.GetExecutingAssembly().CreateInstance(string.Format("ygPlatForm.Logic.MenuLogic.{0}Menu", item.Name), false) as MenuBase; if (menuName != null) { MenuBase menuBase = System.Reflection.Assembly.GetExecutingAssembly().CreateInstance(menuName, true) as MenuBase; if (menuBase != null) menuBase.Excute(this.tabDown); } } }
,温馨提示: 本文由Jm博客推荐,转载请保留链接: https://www.jmwww.net/file/68373.html