簡體   English   中英

C#WPF上下文菜單項單擊事件返回null

[英]C# WPF Context menu item click event returns null

我在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始終為空,有人知道嗎?

我看不出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;
}

這是我的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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM