Visual Studio/WPF > 컨트롤 > ContextMenu > Border에 대한 예제

운영 환경
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> 로 지정하고 있는 컨텍스트 메뉴가 열린다.
다른 부분에서는 컨텍스트 메뉴가 정의되어 있지 않으므로 열리지 않습니다.



Menu1을 선택했을 때는 클릭 이벤트로 처리를 한다.



링크



Window.Resources에서 정의한 예가 아래에 소개되어 있습니다.
컨텍스트 메뉴 사용 @ HIRO 's .NET

좋은 웹페이지 즐겨찾기