wpf中怎么根据右键获取触发的源控件?

canglanqu 2014-10-27 04:17:13
想在右键点击时间中使用触发的源控件,怎么办?
比如,代码如下:
<Button name = “btn”>
<Button.ContextMenu>
<ContextMenu>
<MenuItem Header="右键" Click="BtnMenuItem_Click"/>
</ContextMenu>
</Button.ContextMenu>
</Button>

private void BtnMenuItem_Click(object sender, RoutedEventArgs e)
{

}

我想在BtnMenuItem_Click 中使用触发右键的按钮btn,我应该怎么做?
...全文
153 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
E次奥 2014-10-27
  • 打赏
  • 举报
回复
引用 5 楼 duanzi_peng 的回复:
#1 胡闹。
你的却是是正解?但我在ContextMenu用绑定后MenuItem的Parent为null,你试试看是不?
     <Button>
                                <Button.ContextMenu>
                                    <ContextMenu>
                                        <ContextMenu.ItemContainerStyle>
                                            <Style TargetType="{x:Type MenuItem}">
                                                <Setter Property="Header" Value="{Binding ItemHeader}"/>
                                                <EventSetter Event="MenuItem.Click" Handler="Item_Click"/>
                                            </Style>
                                        </ContextMenu.ItemContainerStyle>
                                    </ContextMenu>
                                </Button.ContextMenu>
                                <Image Source="images/tools.tif" Stretch="Fill"/>
                            </Button>
  private void Item_Click(object sender, RoutedEventArgs e)
        {
//........
}
canglanqu 2014-10-27
  • 打赏
  • 举报
回复 2
引用 3 楼 duanzi_peng 的回复:

Button btn = ((e.Source as MenuItem).Parent as ContextMenu).PlacementTarget as Button;
结贴吧。
感谢!
  • 打赏
  • 举报
回复
#1 胡闹。
Forty2 2014-10-27
  • 打赏
  • 举报
回复

private void BtnMenuItem_Click(object sender, RoutedEventArgs e)
{
    ContextMenu cm = (ContextMenu)ContextMenu.ItemsControlFromItemContainer((MenuItem)e.OriginalSource);
    UIElement placementTarget = cm.PlacementTarget;
    Button btn = placementTarget as Button;
}
  • 打赏
  • 举报
回复

Button btn = ((e.Source as MenuItem).Parent as ContextMenu).PlacementTarget as Button;
结贴吧。
於黾 2014-10-27
  • 打赏
  • 举报
回复
Button btn=sender as Button; 然后获取btn.Name
於黾 2014-10-27
  • 打赏
  • 举报
回复
不是有sender吗 把它转成button就好了

111,093

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧