我有一组显示在数据绑定列表框中的对象。列表框包含定义为 StackPanel 的模板,其中包含 TextBlock。TextBlock 显示了我的数据以集合为界。
我还使用适用于 Windows Phone 的 Silverlight 工具包关联上下文菜单。我以编程方式将 ContextMenu 和 MenuItems 关联到选定的 TextBlock。我通过自己的点击事件处理每个菜单项。
我面临的问题是,当我从上下文菜单中单击菜单项时,我无法从列表框中获取引用的控件。换句话说,我无法获得对显示上下文菜单的 TextBlock 的引用。
问问题
165 次
1 回答
0
我认为有一种方法可以将元素关联到给定的 ContextMenu,但由于我找不到它,这里有一个解决方法。
您说您正在以编程方式将 ContextMenu 与 TextBlock 相关联。然后,您可以使用美妙的Tag 属性来保存对您的 TextBlock 的引用。正如您在链接中看到的那样,Tag 包含任意对象。代码如下:
首先,您将标签设置为您的文本块(我使用了一些通用名称)
menuitem.Tag = textblock;
然后,在点击处理程序中,检索该 Textblock
var menuItem = sender as MenuItem;
if(menuItem != null && menuItem.Tag is TextBlock)
var textBlock = menuItem.Tag as TextBlock;
那么,textBlock 就是调用 ContextMenu 的 TextBlock。
希望它有所帮助。
于 2012-06-03T14:55:17.973 回答