Windows phone 7 以编程方式添加WP7上下文菜单
我正在动态加载页面上的元素(读取XML文件的内容)。动态内容被加载到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,
堆栈面板中
。内容的每个元素由一个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);