通过点击事件获取菜单项名称

Get MenuItem Name by Click Event

我想通过单击获得 MenuItem 名称。

据我所知,我的 Menu 里面有两个 MenuItem(如您所见)。

XAML:

<DockPanel Margin="0,-17,0,0">
    <Menu DockPanel.Dock="Top">
        <MenuItem Header="_Optionen">
            <MenuItem Name="MI_1" Header="MI 1" Click="Set_MI"/>
            <MenuItem Name="MI_2" Header="MI 2" Click="Set_MI"/>
        </MenuItem>
    </Menu>
    <StackPanel></StackPanel>
</DockPanel>

C#:

private void Set_MI(object sender, RoutedEventArgs e)
{
    var MI = sender as MenuItem;
    switch (MI.Name)

我试图将 object sender 转换为 MenuItem,这引发了我这个错误:

The error Shows up at Switch (MI.Name)

System.NullReferenceException: "The object reference was not set to an object instance."

"MI" is "null"

顺便说一句。我不知道 ToolStripMenuItem 是什么意思。

是否有任何正确的解决方案来将 object sender 转换为 MenuItem / 通过单击 MenuItem 获取名称?

确保您转换为 System.Windows.Controls.MenuItem 而不是其他类型的自定义 MenuItem 类型:

private void Set_Speicherpfade(object sender, RoutedEventArgs e)
{
    var MI = sender as System.Windows.Controls.MenuItem;
    if (MI != null)
    {
        switch (MI.Name)
        {
            ...
        }
    }
}