我有一个MenuItem,其中ItemsSource被数据绑定到一个简单的字符串列表,它显示正确,但我很难看到我如何处理它们的点击事件!
这是一个演示它的简单应用程序:
using System.Collections.Generic; using System.Windows; namespace WPFDataBoundMenu { ////// Interaction logic for Window1.xaml /// public partial class Window1 : Window { public ListMyMenuItems { get; set;} public Window1() { InitializeComponent(); MyMenuItems = new List { "Item 1", "Item 2", "Item 3" }; DataContext = this; } private void MenuItem_Click(object sender, RoutedEventArgs e) { MessageBox.Show("how do i handle the other clicks?!"); } } }
非常感谢!
克里斯.
代码背后..
private void DataBoundMenuItem_Click(object sender, RoutedEventArgs e) { MenuItem obMenuItem = e.OriginalSource as MenuItem; MessageBox.Show( String.Format("{0} just said Hi!", obMenuItem.Header)); }
事件将冒泡到公共处理程序.然后,您可以使用Header文本或更好的DataContext属性来切换并根据需要执行操作
您可以使每个菜单项执行相同的命令,从而集中处理执行。如果您需要区分实际对象实例之外的菜单项,那么也可以绑定command参数:
SomeProperty
假定是MyMenuItems
集合中每个项目的属性。因此,您的命令执行处理程序将收到所SomeProperty
单击的特定菜单项的值。