我有一个MenuItem,ItemsSource是数据绑定到一个简单的字符串列表,它正确显示,但我很难看到我如何处理他们的点击事件!
这是一个简单的应用程序,演示它:
- <Window x:Class="WPFDataBoundMenu.Window1"
- xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
- xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
- Title="Window1" Height="300" Width="300">
- <Grid>
- <Menu>
- <MenuItem Header="File" Click="MenuItem_Click" />
- <MenuItem Header="My Items" ItemsSource="{Binding Path=MyMenuItems}" />
- </Menu>
- </Grid>
- using System.Collections.Generic;
- using System.Windows;
- namespace WPFDataBoundMenu
- {
- /// <summary>
- /// Interaction logic for Window1.xaml
- /// </summary>
- public partial class Window1 : Window
- {
- public List<string> MyMenuItems { get; set;}
- public Window1()
- {
- InitializeComponent();
- MyMenuItems = new List<string> { "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?!");
- }
- }
- }
非常感谢!
克里斯.
解决方法
- <MenuItem Header="My Items" ItemsSource="{Binding Path=MyMenuItems}" Click="DataBoundMenuItem_Click" />
代码背后..
- private void DataBoundMenuItem_Click(object sender,RoutedEventArgs e)
- {
- MenuItem obMenuItem = e.OriginalSource as MenuItem;
- MessageBox.Show( String.Format("{0} just said Hi!",obMenuItem.Header));
- }
事件会冒泡到普通的处理程序.然后,您可以使用头文本或更好的DataContext属性进行切换并根据需要进行操作