1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Visual Studio / WPF > コントロール > ContextMenu > Borderに対する例

Last updated at Posted at 2017-04-25
動作環境
Windows 7 Pro (32bit)
Microsoft Visual Studio 2017 Community
Sublime Text 2

@ WPF 4.5入門 by 大田一希さん
No.3958 / 9985

ContextMenuコントロールは、特定のコントロールに対して固有のメニュー(主に右クリックしたときに表示されるメニュー)を提供するためのコントロールです。

試してみた。
メニュー選択時にメッセージダイアログを表示するようにC#スクリプトで記述した。

XAML
<Window x:Class="_170425_t1733_ContextMenu.MainWindow"
        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:local="clr-namespace:_170425_t1733_ContextMenu"
        mc:Ignorable="d"
        Title="MainWindow" Height="350" Width="525">
    <Grid>
        <Border Width="100" Height="100" Background="Green">
            <Border.ContextMenu>
                <ContextMenu>
                    <MenuItem Header="Menu1" Click="Menu1_Click"/>
                    <MenuItem Header="Menu2"/>
                    <MenuItem Header="Menu3" Click="Menu2_Click"/>
                </ContextMenu>
            </Border.ContextMenu>
        </Border>
        <Button Content="Button" HorizontalAlignment="Left" Margin="104,96,0,0" VerticalAlignment="Top" Width="75"/>
    </Grid>
</Window>
MainWindow.xaml.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;

namespace _170425_t1733_ContextMenu
{
    /// <summary>
    /// MainWindow.xaml の相互作用ロジック
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }

        private void Menu1_Click(object sender, RoutedEventArgs e)
        {
            MessageBox.Show("Menu1");
        }

        private void Menu2_Click(object sender, RoutedEventArgs e)
        {
            MessageBox.Show("Menu3");
        }
    }
}

緑のBorderに対しては<Border.ContextMenu>で指定しているとおりのコンテキストメニューが開く。
他の部分ではコンテキストメニューは定義していないため開かない。

work.png

Menu1を選択したときはクリックイベントで処理をする。

work.png

リンク

Window.Resourcesで定義している例が以下に紹介されている。
コンテキストメニューを使用する @ HIRO's .NETさん

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?