【问题标题】:Adding WP7 ContextMenu programmatically以编程方式添加 WP7 ContextMenu
【发布时间】:2010-12-28 04:29:49
【问题描述】:

我正在动态加载页面上的元素(读取 XML 文件的内容)。动态内容被加载到StackPanel。内容的每个元素都包含一个TextBlock 和一个其他UI 元素,因此我为每一对创建一个新的StackPanel,然后将其添加到父StackPanel。代码如下所示:

TextBlock header = new TextBlock() {
        Text = "Heading 1",
        HorizontalAlignment = HorizontalAlignment.Stretch,
        VerticalAlignment = VerticalAlignment.Top,
        Foreground = (SolidColorBrush)Application.Current.Resources["PhoneAccentBrush"],
      };
TextBox item = new TextBox() {
        HorizontalAlignment = HorizontalAlignment.Stretch,
        VerticalAlignment = VerticalAlignment.Top,
      };
StackPanel sp = new StackPanel();
sp.Children.Add( header );
sp.Children.Add( item );

parentSP.Children.Add( sp );

我想在这个StackPanel 上添加一个ContextMenusp,而不是parentSP);根据从文件中读取的一些参数,它可能是 2 个不同的上下文菜单之一。我尝试了以下方法,但它不起作用:

    ContextMenu cm = new ContextMenu();
    RoutedEventHandler clickHandler = new RoutedEventHandler( OnContextMenuClicked );

    // Add "edit" entry
    MenuItem menuItem = new MenuItem() {
      Header = "edit",
      Tag = "edit",
    };

    menuItem.Click += clickHandler;
    cm.Items.Add( menuItem );

    // Add "delete" entry
    menuItem = new MenuItem() {
      Header = "delete",
      Tag = "delete",
    };

    menuItem.Click += clickHandler;
    cm.Items.Add( menuItem );

    parentSP.Children.Add( cm );

如何以编程方式向StackPanel 添加上下文菜单?

另外,有没有更好的方法来解决这个问题?也许通过将 2 种不同类型的上下文菜单存储在 XAML 资源部分并根据需要添加它们?我尝试通过将上下文菜单添加到父级的 StackPanel.Resource 部分来执行此操作,但收到错误消息“一个属性元素不能是另一个属性元素的直接子元素”

提前感谢您的帮助

【问题讨论】:

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


    【解决方案1】:
    ContextMenuService.SetContextMenu(sp, cm);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-06-09
      • 1970-01-01
      • 1970-01-01
      • 2016-03-08
      • 1970-01-01
      • 1970-01-01
      • 2012-02-29
      • 2021-08-23
      相关资源
      最近更新 更多