问题描述
<Windowx:Class="Weight_Batch.UI.MainWindow"xmlns:src="clr-namespace:Weight_Batch.UI"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"Title="MainWindow"Height="350"Width="525"WindowState="Maximized"><Window.Resources><HierarchicalDataTemplatex:Key="MenuItem"ItemsSource="{BindingChildren}"><TextBlockText="{BindingText}"/></HierarchicalDataTemplate></Window.Resources><GridName="Grid_1"><Grid.RowDefinitions><RowDefinitionHeight="30"/><RowDefinition/><RowDefinitionHeight="30"/></Grid.RowDefinitions><DockPanelName="Menu"Grid.Row="0"MenuItem.Click="StackPanel_Click"><MenuName="MainMenu"DockPanel.Dock="Top"ItemTemplate="{StaticResourceMenuItem}"Height="30"/></DockPanel><StackPanelName="Workbench"Grid.Row="1"Height="80"><Menu><MenuItemHeader="TT"><MenuItemHeader="Y1"Click="ONCLIK"/><MenuItemHeader="Y2"Click="ONCLIK"/></MenuItem></Menu></StackPanel><DockPanelName="Status"Grid.Row="2"></DockPanel></Grid></Window>usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;usingSystem.Threading.Tasks;usingSystem.Windows;usingSystem.Windows.Controls;usingSystem.Windows.Data;usingSystem.Windows.Documents;usingSystem.Windows.Input;usingSystem.Windows.Media;usingSystem.Windows.Media.Imaging;usingSystem.Windows.Navigation;usingSystem.Windows.Shapes;usingWeight_Batch.DAL;usingSystem.Data.Entity;usingSystem.Data;usingSystem.Configuration;usingSystem.Xml;usingSystem.Reflection;usinglog4net;usingWeight_Batch.Model;namespaceWeight_Batch.UI{///<summary>///MainWindow.xaml的交互逻辑///</summary>publicpartialclassMainWindow:Window{privatestaticSysPersonLoginUser=newSysPerson();publicstaticSysPersonloginUser{set{LoginUser=value;}}publicMainWindow(){InitializeComponent();#regiontry{using(varcontext=newWeight_Batch_Context()){varSonMenu=frompincontext.MenuRoles.ToList()wherep.ParentName!=""&&p.RoleID==LoginUser.RoleID&&p.Selected==trueorderbyp.Sortgrouppbyp.ParentNameintogorderbyg.Count()selectnew{ParentName=g.Key,count=g.Count(),name=fromr1ingorderbyr1.Sortselectr1.Menu};List<MenuModel>M=newList<MenuModel>();foreach(vargpinSonMenu){MenuModelN=newMenuModel();N.Text=gp.ParentName;foreach(varNameingp.name){MenuModelP=newMenuModel();P.Text=Name;N.Children.Add(P);}M.Add(N);}MainMenu.ItemsSource=M;}}catch{}}privatevoidStackPanel_Click(objectsender,RoutedEventArgse){MenuItemmi=(MenuItem)e.OriginalSource;}}}在后台代码中如何获取点击的菜单项的名称,然后处理相关事情usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;usingSystem.Threading.Tasks;namespaceWeight_Batch.Model{publicclassMenuModel{stringtext;publicstringText{get{returntext;}set{text=value;}}List<MenuModel>children=newList<MenuModel>();publicList<MenuModel>Children{get{returnchildren;}set{children=value;}}}
解决方案
解决方案二:
在你的ONCLIK事件中使用senderasMenuItem转换成MenuItem取它的属性。