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

时间:2018-01-25 22:14:16

标签: c# wpf contextmenu

我正在使用带有C#的WPF。我有一个按钮网格,如果右键单击,我为每个按钮分配了一个上下文菜单。右键单击按钮工作正常,上下文菜单显示,但单击菜单项会给出一个空的发件人。可能有什么不对?以下是嵌入到Window XAML代码中的相关代码:

 <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#代码:

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总是空的,有人有线索吗?

2 个答案:

答案 0 :(得分:4)

我没有看到任何理由为什么mi会为null,但是你没有包含所有内容,所以我在这里试探并猜测mi.ContextMenu是你遇到问题的地方。菜单项本身没有ContextMenu,但它确实有一个Parent属性,它属于它所属的ContextMenu,可能就是你要找的东西。

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;
}

答案 1 :(得分:1)

这是我的XAML:

   <Window.Resources>
        <ContextMenu x:Key="cmButton">
            <MenuItem Click="Copy_Click" Header="Copy" />
            <MenuItem Header="Cut" />
            <Separator />
            <MenuItem Click="Paste_Click" Header="Paste" />
        </ContextMenu>
    </Window.Resources>
    <Grid>
        <Button Content="SS" ContextMenu="{StaticResource cmButton}" />
    </Grid>

这是我的代码:

   private void Paste_Click(object sender, RoutedEventArgs e)
        {
            if (sender is MenuItem menuItem)
            {
                Debug.WriteLine("Ok");
            }

            if (e.OriginalSource is MenuItem menuItem2)
            {
                Debug.WriteLine("Ok");
            }
        }

它有效,menuItem和menuItem2不为空 你可以在这里下载我的rar: https://1drv.ms/u/s!AthRwq2eHeRWiOkw6MHXelG-ntjaDQ