Windows phone 7 以编程方式添加WP7上下文菜单

Windows phone 7 以编程方式添加WP7上下文菜单,windows-phone-7,contextmenu,silverlight-toolkit,Windows Phone 7,Contextmenu,Silverlight Toolkit,我正在动态加载页面上的元素(读取XML文件的内容)。动态内容被加载到堆栈面板中。内容的每个元素由一个TextBlock和另一个UI元素组成,因此我为每对元素创建一个新的StackPanel,然后将其添加到父StackPanel。代码如下所示: TextBlock header = new TextBlock() { Text = "Heading 1", HorizontalAlignment = HorizontalAlignment.Stretch,

我正在动态加载页面上的元素(读取XML文件的内容)。动态内容被加载到
堆栈面板中
。内容的每个元素由一个
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 );
我想将
上下文菜单添加到此
堆栈面板
sp
,而不是
parentSP
);根据从文件读取的某些参数,它可能是两个不同上下文菜单之一。我尝试了以下操作,但不起作用:

    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

还有,有没有更好的方法来解决这个问题?也许可以将两种不同类型的上下文菜单存储在XAML参考资料部分,并根据需要添加它们?我试图通过将上下文菜单添加到父级的
StackPanel.Resource
部分来实现这一点,但出现了一个错误,即“属性元素不能是另一个属性元素的直接子级”

提前谢谢你的帮助

ContextMenuService.SetContextMenu(sp, cm);