1)前台代码
<UserControl xmlns:toolkit="http://schemas.microsoft.com/winfx/2006/xaml/presentation/toolkit" x:Class="SilverlightApplication119.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="400">
<Grid x:Name="LayoutRoot" Background="White">
<Grid.RowDefinitions>
<RowDefinition Height="50"></RowDefinition>
<RowDefinition Height="*"></RowDefinition>
</Grid.RowDefinitions>
<Button Name="TestButton" Width="200" Height="24" Content="Add" Grid.Row="0"></Button>
<ScrollViewer Name="TestScrollViewer" Grid.Row="1">
<StackPanel Name="TestStackPanel" Orientation="Vertical">
<!--前台绑定ContextMenu-->
<HyperlinkButton Name="ContextMenuTest" Content="Context Menu Test">
<toolkit:ContextMenuService.ContextMenu>
<toolkit:ContextMenu>
<toolkit:MenuItem Name="TestMenuItem1" Header="Test1" Tag="Test1" Click="TestMenuItem_Click">
<toolkit:MenuItem.Icon>
<Image Width="16" Height="16" Source="/SilverlightApplication121;component/Resources/test.png"></Image>
</toolkit:MenuItem.Icon>
</toolkit:MenuItem>
<toolkit:Separator></toolkit:Separator>
<toolkit:MenuItem Name="TestMenuItem2" Header="Test2" Tag="Test2" Click="TestMenuItem_Click">
<toolkit:MenuItem.Icon>
<Image Width="16" Height="16" Source="/SilverlightApplication121;component/Resources/test.png"></Image>
</toolkit:MenuItem.Icon>
</toolkit:MenuItem>
</toolkit:ContextMenu>
</toolkit:ContextMenuService.ContextMenu>
</HyperlinkButton>
</StackPanel>
</ScrollViewer>
</Grid>
</UserControl>
2)后台代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
namespace SilverlightApplication119
{
public partial class MainPage : UserControl
{
private int counter = 0;
public MainPage()
{
InitializeComponent();
TestButton.Click += new RoutedEventHandler(TestButton_Click);
}
void TestButton_Click(object sender, RoutedEventArgs e)
{
//新添加HyperlinkButton
HyperlinkButton hyperlinkButton = new HyperlinkButton();
counter = counter + 1;
hyperlinkButton.Name = "Hyperlink_" + counter;
hyperlinkButton.Content = "Hyperlink_" + counter;
InitContextMenu(hyperlinkButton);//为HyperlinkButton初始化右击菜单
TestStackPanel.Children.Add(hyperlinkButton);
}
/// <summary>
/// 为HyperlinkButton初始化右击菜单
/// </summary>
/// <param name="button"></param>
private void InitContextMenu(HyperlinkButton hyperlinkButton)
{
ContextMenu contextMenu = new ContextMenu();
//修改
MenuItem EditMenuItem = new MenuItem();
EditMenuItem.Name = "Edit_" + hyperlinkButton.Name.Split('_')[1];
EditMenuItem.Header = "修改";
//为EditImage设置Icon
//Image EditImage = new Image();
//EditImage.Source = new System.Windows.Media.Imaging.BitmapImage(new Uri("Resources/Edit.png", UriKind.Relative));
//EditImage.Width = 16;
//EditImage.Height = 16;
//EditMenuItem.Icon = EditImage;
EditMenuItem.Click += new RoutedEventHandler(EditMenuItem_Click);
contextMenu.Items.Add(EditMenuItem);
//分割线
Separator Separator1 = new Separator();
contextMenu.Items.Add(Separator1);
//删除
MenuItem DeleteMenuItem = new MenuItem();
DeleteMenuItem.Name = "Delete_" + hyperlinkButton.Name.Split('_')[1];
DeleteMenuItem.Header = "删除";
DeleteMenuItem.Click += new RoutedEventHandler(DeleteMenuItem_Click);
contextMenu.Items.Add(DeleteMenuItem);
ContextMenuService.SetContextMenu(hyperlinkButton, contextMenu);
}
void DeleteMenuItem_Click(object sender, RoutedEventArgs e)
{
MenuItem menuItem = sender as MenuItem;
MessageBox.Show("Delete " + menuItem.Name.Split('_')[1]);
}
void EditMenuItem_Click(object sender, RoutedEventArgs e)
{
MenuItem menuItem = sender as MenuItem;
MessageBox.Show("Edit " + menuItem.Name.Split('_')[1]);
}
private void TestMenuItem_Click(object sender, RoutedEventArgs e)
{
MenuItem menuItem = sender as MenuItem;
MessageBox.Show(menuItem.Tag.ToString());
}
}
}