WPF ContextMenu简单问题,大神速来!

乌蝇哥 2013-02-25 06:25:46

MenuItem itemA = new MenuItem()
{
Header = "设置为停用",
};
itemD.Click += AllContextMenuItemClick;

ContextMenu cmenu = new ContextMenu()
{
Width = 100,
ItemsSource = menuitem,
Tag=im.Tag
};
cmenu.Add(itemA);

Image im = new Image();
im.Tag="我要的数据";
im.ContextMenu=cmenu

private void AllContextMenuItemClick(object sender, RoutedEventArgs e)
{
//我想在这里,也就是menuItem的click事件里获取到 image.Tag里的东西.
}


...全文
324 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
DENQH 2013-02-26
  • 打赏
  • 举报
回复
XAML里 <ContextMenu ButtonBase.Click= "AllContextMenuItemClick" > private void AllContextMenuItemClick(object sender, RoutedEventArgs e) { FrameworkElement feSource = e.Source as FrameworkElement; switch (feSource.Name) { case "...": ................ break; } }
乌蝇哥 2013-02-26
  • 打赏
  • 举报
回复
引用 8 楼 qq2088262 的回复:
引用 7 楼 qldsrx 的回复:引用 1 楼 lye2000000_super 的回复:那你得定义个全局变量。你这是局部变量。用完了就没了。生命周期不对。 这个肯定取不到的。全局的就可以取到了。 他的代码没有写全,这个image肯定在外部被引用的,所以不用担心生命周期。 你的这个点击事件,要从sender参数入手,那个sender应该就是MenuItem ite……
不过现在我已经通过另外的方式解决了,我在contextMenu的open 事件中, var cmMenu = ((ContextMenu)sender); Image ok = cmMenu.PlacementTarget as Image; 这样获取到了contextMenu的图片,问了朋友才知道 PlacementTarget 这个属性
乌蝇哥 2013-02-26
  • 打赏
  • 举报
回复
引用 7 楼 qldsrx 的回复:
引用 1 楼 lye2000000_super 的回复:那你得定义个全局变量。你这是局部变量。用完了就没了。生命周期不对。 这个肯定取不到的。全局的就可以取到了。 他的代码没有写全,这个image肯定在外部被引用的,所以不用担心生命周期。 你的这个点击事件,要从sender参数入手,那个sender应该就是MenuItem itemA,然后再往上要找ContextM……
你理解是对的,我就是想通过 menuItem 往上找它所属的contextMenu,但是menuItem的paren属性是空的。
qldsrx 2013-02-26
  • 打赏
  • 举报
回复
引用 1 楼 lye2000000_super 的回复:
那你得定义个全局变量。你这是局部变量。用完了就没了。生命周期不对。 这个肯定取不到的。全局的就可以取到了。
他的代码没有写全,这个image肯定在外部被引用的,所以不用担心生命周期。 你的这个点击事件,要从sender参数入手,那个sender应该就是MenuItem itemA,然后再往上要找ContextMenu cmenu,通过Parent属性,该属性返回的是DependencyObject对象,你要强制类型转换到ContextMenu 上面,之后就可以访问Tag属性了。
乌蝇哥 2013-02-26
  • 打赏
  • 举报
回复
引用 3 楼 lye2000000_super 的回复:
那你就保存到List<Image>对象里。 反正你必须得保存到全局变量里。不然你就找不到。
你意思是把List<Image> imgs = new List<Image>();作为全局变量?但是,我代码的情况是,每一个image都绑定有一个ContextMenu, 遍历imgs 根据什么条件判断 哪个是哪个?
  • 打赏
  • 举报
回复
List<Image> imgs = new List<Image>(); Image im = new Image(); im.Tag="我要的数据"; im.ContextMenu=cmenu imgs.Add(im); private void AllContextMenuItemClick(object sender, RoutedEventArgs e) { //我想在这里,也就是menuItem的click事件里获取到 image.Tag里的东西. } 这里面遍历查找吧。
  • 打赏
  • 举报
回复
那你就保存到List<Image>对象里。 反正你必须得保存到全局变量里。不然你就找不到。
乌蝇哥 2013-02-25
  • 打赏
  • 举报
回复
引用 1 楼 lye2000000_super 的回复:
那你得定义个全局变量。你这是局部变量。用完了就没了。生命周期不对。 这个肯定取不到的。全局的就可以取到了。
我那个image也是动态添加new多个的。比如说我有10个person类 ,就new了10个image,每个image的tag保存person的ID,我就是想通过右键菜单menuItem的点击获取到这个person的ID
  • 打赏
  • 举报
回复
那你得定义个全局变量。你这是局部变量。用完了就没了。生命周期不对。 这个肯定取不到的。全局的就可以取到了。

110,536

社区成员

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

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

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