首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >C# WPF上下文菜单项单击事件返回null

C# WPF上下文菜单项单击事件返回null
EN

Stack Overflow用户
提问于 2018-01-26 06:14:16
回答 2查看 1.5K关注 0票数 1

我在C#中使用WPF。我有一个按钮网格,如果右键单击,我已经为每个按钮分配了一个上下文菜单。右键单击按钮可以很好地工作,并显示上下文菜单,但单击菜单项将显示空的发送者。会出什么问题呢?下面是嵌入到Window XAML代码中的相关代码:

代码语言:javascript
运行
复制
 <Window.Resources>
    <ContextMenu x:Key="cmButton">
        <MenuItem Header="Copy" Click="Copy_Click" />
        <MenuItem Header="Cut" />
        <Separator />
        <MenuItem Header="Paste" Click="Paste_Click" />
    </ContextMenu>
 </Window.Resources>

下面是相关的C#代码:

代码语言:javascript
运行
复制
public void WarpHeadCell_RightClick(DraftWindow w, Button b)
    {
        ContextMenu cm = w.FindResource("cmButton") as ContextMenu;
        cm.PlacementTarget = b;
        cm.IsOpen = true;         
    } 

 private void Copy_Click(object sender, RoutedEventArgs e)
   {
       MenuItem mi = e.OriginalSource as System.Windows.Controls.MenuItem;
       ContextMenu cm = mi.ContextMenu;
       Button b = (Button)cm.PlacementTarget;   
   }

mi总是空的,有谁有线索吗?

EN

Stack Overflow用户

回答已采纳

发布于 2018-01-26 06:39:45

我看不出为什么mi会为空,但您没有包含所有内容,所以我在这里冒险猜测mi.ContextMenu是您遇到问题的地方。菜单项本身没有ContextMenu,但它有一个Parent属性,这是它所属的ContextMenu,可能就是您要查找的。

代码语言:javascript
运行
复制
private void Copy_Click(object sender, RoutedEventArgs e)
{
    MenuItem mi = sender as MenuItem;
    ContextMenu cm = mi.Parent as ContextMenu;
    Button b = cm.PlacementTarget as Button;
}
票数 4
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48452760

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档