通过单击事件获取MenuItem名称
问题描述:
我想通过单击它来获取MenuItem
名称。通过单击事件获取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"
Btw。我不知道ToolStripMenuItem
是什么意思。
是否有任何propper解决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)
{
...
}
}
}
你的意思是什么_“不工作” _?它抛出异常,给出一些错误,而不是预期的价值? – SeM
对于WPF,有[MenuItem](https://msdn.microsoft.com/en-us/library/system.windows.controls.menuitem(v = vs.110).aspx),并有[ToolStripMenuItem] (https://msdn.microsoft.com/en-us/library/system.windows.forms.toolstripmenuitem(v=vs.110).aspx),用于WinForms。你有一个WPF标签,但在代码中使用'ToolStripMenuItem'。请首先澄清。另外,“不为我工作”太模糊,你是否得到一个错误? –
如果我怀疑是真的,并且它是一个错误投射的简单情况,只需尝试'var MI = sender作为MenuItem;开关(MI.Name)' –