以编程方式添加WP7 ContextMenu

Pra*_*ian 4 contextmenu silverlight-toolkit windows-phone-7

我正在动态地在页面上加载元素(读取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 );
Run Code Online (Sandbox Code Playgroud)

我想将添加ContextMenu到这个StackPanel(spparentSP); 根据从文件中读取的一些参数,它可以是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 );
Run Code Online (Sandbox Code Playgroud)

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

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

在此先感谢您的帮助

dec*_*one 9

ContextMenuService.SetContextMenu(sp, cm);
Run Code Online (Sandbox Code Playgroud)

  • 本来很高兴得到他的其他问题的一些答案...... (2认同)