获取点击的menuitem绑定对象WPF



xaml

 <Grid>
    <TreeView Name="tr">
        <TreeView.ContextMenu>
            <ContextMenu>
                <MenuItem Header="Malfunction" Name="mi" Click="mi_Click">                                                            </MenuItem>
            </ContextMenu>
        </TreeView.ContextMenu>
    </TreeView>

背后的代码

名称空间contextmenuexamples{

public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();
        List<Device> lst = new List<Device>();
        lst.Add(new Device() { DeviceId = 1, DeviceName = "Device1" });
        lst.Add(new Device() { DeviceId = 2, DeviceName = "Device2" });
        lst.Add(new Device() { DeviceId = 3, DeviceName = "Device3" });
        lst.Add(new Device() { DeviceId = 4, DeviceName = "Device4" });
        lst.Add(new Device() { DeviceId = 5, DeviceName = "Device4" });
        tr.ItemsSource = lst;
        tr.DisplayMemberPath = "DeviceName";
        List<Malfunction> mf = new List<Malfunction>();
        mf.Add(new Malfunction() { MalfunctionName = "Malfunction1", Id = 1 });
        mf.Add(new Malfunction() { MalfunctionName = "Malfunction2", Id = 2 });
        mf.Add(new Malfunction() { MalfunctionName = "Malfunction3", Id = 3 });
        mf.Add(new Malfunction() { MalfunctionName = "Malfunction4", Id = 4 });
        mf.Add(new Malfunction() { MalfunctionName = "Malfunction5", Id = 5 });
        mf.Add(new Malfunction() { MalfunctionName = "Malfunction6", Id = 6 });
        mi.ItemsSource = mf;
        mi.DisplayMemberPath = "MalfunctionName";
    }
    private void mi_Click(object sender, RoutedEventArgs e)
    {
        /*here  value of clicked **Malfunction** object required. if I click  
        Malfunction6. Then I should get MalfunctionName ="Malfunction6"* and     Id =6*/
    }
}
public class Device
{
    public string DeviceName { get; set; }
    public int DeviceId { get; set; }
}
public class Malfunction
{
    public string MalfunctionName { get; set; }
    public int Id { get; set; }
}

}


图像

contextMenu,点击benuitem

在这里,我的查询是如何在菜单单击事件中获取单击菜单项对象的引用。如果我单击故障6菜单项。然后,它应该获得malfunctionName =" MALFUNCTICT6 "和 ID = 6

benuitem键单击是在routedeventargs e OriginalSource变量中传递的。然后在变量中将类存储在标题变量中。

    private void mi_Click(object sender, RoutedEventArgs e)
    {
        /*here  value of clicked **Malfunction** object required. if I click  
        Malfunction6. Then I should get MalfunctionName ="Malfunction6"* and     Id =6*/
        System.Windows.Controls.MenuItem mi = e.OriginalSource as System.Windows.Controls.MenuItem;
        Malfunction m = mi.Header as Malfunction;
        System.Console.WriteLine(m.MalfunctionName);
        System.Console.WriteLine(m.Id);
    }

最新更新