我在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总是空的,有谁有线索吗?
发布于 2018-01-26 06:39:45
我看不出为什么mi会为空,但您没有包含所有内容,所以我在这里冒险猜测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;
}https://stackoverflow.com/questions/48452760
复制相似问题