【问题标题】:Cant find the referenced control on clicking menu item of ContextMenu in Windows Phone在 Windows Phone 中单击 ContextMenu 的菜单项时找不到引用的控件
【发布时间】:2012-06-03 11:12:16
【问题描述】:

我有一组显示在数据绑定列表框中的对象。列表框包含定义为 StackPanel 的模板,其中包含 TextBlock。 TextBlock 显示了我的集合中的数据。

我还使用适用于 Windows Phone 的 Silverlight 工具包关联上下文菜单。我以编程方式将 ContextMenu 和 MenuItems 关联到选定的 TextBlock。我通过自己的点击事件处理每个菜单项。

我面临的问题是,当我从上下文菜单中单击菜单项时,我无法从列表框中获取引用的控件。换句话说,我无法获得对显示上下文菜单的 TextBlock 的引用。

【问题讨论】:

    标签: windows-phone-7 contextmenu silverlight-toolkit


    【解决方案1】:

    我认为有一种方法可以获取与给定 ContextMenu 关联的元素,但由于我找不到,这里有一个解决方法。

    您说您正在以编程方式将 ContextMenu 与 TextBlock 相关联。然后,您可以使用美妙的Tag property 来保存对您的TextBlock 的引用。正如您在链接中看到的那样,Tag 包含任意对象。代码如下:

    首先,将标签设置为文本块(我使用了一些通用名称)

    menuitem.Tag = textblock;
    

    然后,在点击处理程序中,检索该文本块

    var menuItem = sender as MenuItem;
    if(menuItem != null && menuItem.Tag is TextBlock)
       var textBlock = menuItem.Tag as TextBlock;
    

    那么,textBlock 就是调用 ContextMenu 的 TextBlock。

    希望对您有所帮助。

    【讨论】:

    • ContextMenu 类中无法获取引用的控件。但是,对于桌面 wpf/silverlight,有一个 PlacementTarget 属性可能有助于获取引用的控件...
      非常感谢答案。我一试就标记了。 Bcoz 它对我来说很重要。无论如何,谢谢...:)
    猜你喜欢
    • 2012-08-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多