日期:2014-05-17  浏览次数:20739 次

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

   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里的东西.
        }

 
wpf

------解决方案--------------------
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里的东西.
        }

这里面遍历查找吧。
------解决方案--------------------
引用:
那你得定义个全局变量。你这是局部变量。用完了就没了。生命周期不对。
这个肯定取不到的。全局的就可以取到了。

他的代码没有写全,这个image肯定在外部被引用的,所以不用担心生命周期。
你的这个点击事件,要从sender参数入手,那个sender应该就是MenuItem?itemA,然后再往上要找ContextMenu cmenu,通过Parent属性,该属性返回的是DependencyObject对象,你要强制类型转换到ContextMenu 上面,之后就可以访问Tag属性了。