[英]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.