【发布时间】:2017-10-19 09:42:19
【问题描述】:
我想通过点击获得MenuItem 名称。
据我所知,我的 Menu 里面有两个 MenuItems(如您所见)。
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,这会引发此错误:
错误显示在 Switch (MI.Name)
System.NullReferenceException:“对象引用未设置为对象实例。”
“MI”为“空”
顺便说一句。我不知道ToolStripMenuItem 是/意味着什么。
是否有任何适当的解决方案可以将object sender 转换为MenuItem / 通过单击MenuItem 获取名称?
【问题讨论】:
-
你的意思是“不工作”?它抛出异常,给出一些错误,而不是预期值?
-
WPF 有MenuItem,WinForms 有ToolStripMenuItem。您有 WPF 的标签,但在代码中使用
ToolStripMenuItem。请先澄清这一点。另外,“不要为我工作”太含糊了,你有错误吗? -
如果我的怀疑是真的并且这是一个简单的错误演员案例,只需尝试
var MI = sender as MenuItem; switch (MI.Name) -
您在哪里为项目设置名称?有 3 种可能性 - 名称、标签、文本。看看这个属性,也许你会在那里找到你的名字
-
@KeyurPATEL 它抛出了同样的异常:System.nullreferenceexeption
标签: c# wpf menu nullreferenceexception menuitem