silverlight 4 ContextMenu的使用

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());
        }
    }
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值