【Silverlight】 コンテキストメニューを表示するには

◆ 事前準備

1. Silverlight Toolkit をインストール
  ★NuGet
    http://nuget.org/List/Packages/SilverlightToolkit-All    
  ★インストーラー
    http://silverlight.codeplex.com/releases/view/43528

2. System.Windows.Controls.Input.Toolkit.dll を参照設定

◆ XAML

<UserControl x:Class="Views.TestView"
  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"
  xmlns:controlsInputToolkit="clr-namespace:System.Windows.Controls;
    assembly=System.Windows.Controls.Input.Toolkit"
  mc:Ignorable="d"
  d:DesignHeight="300" d:DesignWidth="400">
  
  <Grid x:Name="LayoutRoot">
    <StackPanel HorizontalAlignment="Left">
      <TextBox Name="txtContextMenu" Height="30" Width="200">
        <controlsInputToolkit:ContextMenuService.ContextMenu>
          <controlsInputToolkit:ContextMenu Height="90" 
              Name="contextMenu1" Width="160">
            <controlsInputToolkit:MenuItem x:Name="MenuCopy"
                Header="コピー" Click="MenuCopy_Click">
              <controlsInputToolkit:MenuItem.Icon>
                <Image Height="25" Width="25" Source="Copy.png"></Image>
              </controlsInputToolkit:MenuItem.Icon>
            </controlsInputToolkit:MenuItem>
            <controlsInputToolkit:MenuItem x:Name="MenuPaste" 
                Header="貼り付け" Click="MenuPaste_Click">
              <controlsInputToolkit:MenuItem.Icon>
                <Image Height="25" Width="25" Source="Paste.png"></Image>
              </controlsInputToolkit:MenuItem.Icon>
            </controlsInputToolkit:MenuItem>
            <controlsInputToolkit:Separator />
            <controlsInputToolkit:MenuItem x:Name="MenuCut" 
                Header="切り取り" Click="MenuCut_Click">
              <controlsInputToolkit:MenuItem.Icon>
                <Image Height="25" Width="25" Source="Cut.png"></Image>
              </controlsInputToolkit:MenuItem.Icon>
            </controlsInputToolkit:MenuItem>
          </controlsInputToolkit:ContextMenu>
        </controlsInputToolkit:ContextMenuService.ContextMenu>
      </TextBox>      
    </StackPanel>    
  </Grid>
</UserControl>

◆ C# Code

using System;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Input;

namespace Views
{
    public partial class TestView : UserControl
    {
        public TestView()
        {
            InitializeComponent();

            this.MouseRightButtonDown += (s, e) =>
            {
                e.Handled = true;
            };
        }

        // コピー
        private void MenuCopy_Click(object sender, RoutedEventArgs e)
        {
            Clipboard.SetText(this.txtContextMenu.Text);
        }

        // 貼り付け
        private void MenuPaste_Click(object sender, RoutedEventArgs e)
        {
            this.txtContextMenu.Text = Clipboard.GetText();
        }

        // 切り取り
        private void MenuCut_Click(object sender, RoutedEventArgs e)
        {
            Clipboard.SetText(this.txtContextMenu.Text);
            this.txtContextMenu.Text = string.Empty;
        }
    }
}

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中