[WPF] コンテキストメニューを使用する

スポンサーリンク

本TipsはWPFのみとなります。あらかじめご了承ください。

コンテキストメニューを使用するには ContextMenuクラスを使用します。

メニュー項目は、通常のメニューを作成するときと同様にMenuItemクラスを使用します。

下記はWindowに貼り付けられたTabControlとListBoxにコンテキストメニューを設定する例です。

XAMLでは、コンテキストメニューをリソースとして作成してバインディングしています。

また、XAMLではなくコードでコンテキストメニューを作成する例も下記に示します。

コンテキストメニューを使用する例

 

コンテキストメニューを使用する例

 

XAMLの例

<Window.Resources>
    <ContextMenu x:Key="menuListBox">
        <MenuItem Header="挿入" />
        <MenuItem Header="削除" />
    </ContextMenu>
    <ContextMenu x:Key="menuTab">
        <MenuItem Header="タブの追加" />
        <MenuItem Header="タブを閉じる" />
    </ContextMenu>
</Window.Resources>
<Grid>
    <TabControl Height="233" HorizontalAlignment="Left" Margin="12,16,0,0"
                Name="TabControl1" VerticalAlignment="Top" Width="254"
                ContextMenu="{DynamicResource menuTab}">
        <TabItem Header="言語" Name="TabItem1">
            <Grid>
                <ListBox HorizontalAlignment="Left"  Name="ListBox1" VerticalAlignment="Top" 
                         Height="199" Width="244"
                         ContextMenu="{DynamicResource menuListBox}">
                    <ListBoxItem>VB.NET</ListBoxItem>
                    <ListBoxItem>C#</ListBoxItem>
                    <ListBoxItem>VC++</ListBoxItem>
                    <ListBoxItem>F#</ListBoxItem>
                    <ListBoxItem>PowerShell</ListBoxItem>
                </ListBox>
            </Grid>
        </TabItem>
    </TabControl>
</Grid>

VBの例

'XAMLではなくコードでコンテキストメニューを作成するには下記のようにします

'ListBox1用のコンテキストメニュー
Dim menuListBox As New ContextMenu()
Dim menuItemInsert As New MenuItem()
Dim menuItemDelete As New MenuItem()

'[挿入]と[削除]項目の設定
menuItemInsert.Header = "挿入"
menuItemDelete.Header = "削除"

'ListBox1用のコンテキストメニューに[挿入]と[削除]を追加
menuListBox.Items.Add(menuItemInsert)
menuListBox.Items.Add(menuItemDelete)

'作成したコンテキストメニューをListBox1に設定
ListBox1.ContextMenu = menuListBox

'TabControl1用のコンテキストメニュー
Dim menuTab As New ContextMenu()
Dim menuItemAdd As New MenuItem()
Dim menuItemClose As New MenuItem()

'[挿入]と[削除]項目の設定
menuItemAdd.Header = "タブの追加"
menuItemClose.Header = "タブを閉じる"

'TabControl1用のコンテキストメニューに[タブの追加]と[タブを閉じる]を追加
menuTab.Items.Add(menuItemAdd)
menuTab.Items.Add(menuItemClose)

'作成したコンテキストメニューをTabControl1に設定
TabControl1.ContextMenu = menuTab

C#の例

// XAMLではなくコードでコンテキストメニューを作成するには下記のようにします

// ListBox1用のコンテキストメニュー
ContextMenu menuListBox = new ContextMenu();
MenuItem menuItemInsert = new MenuItem();
MenuItem menuItemDelete = new MenuItem();

// [挿入]と[削除]項目の設定
menuItemInsert.Header = "挿入";
menuItemDelete.Header = "削除";

// ListBox1用のコンテキストメニューに[挿入]と[削除]を追加
menuListBox.Items.Add(menuItemInsert);
menuListBox.Items.Add(menuItemDelete);

// 作成したコンテキストメニューをListBox1に設定
ListBox1.ContextMenu = menuListBox;

// TabControl1用のコンテキストメニュー
ContextMenu menuTab = new ContextMenu();
MenuItem menuItemAdd = new MenuItem();
MenuItem menuItemClose = new MenuItem();

// [挿入]と[削除]項目の設定
menuItemAdd.Header = "タブの追加";
menuItemClose.Header = "タブを閉じる";

// TabControl1用のコンテキストメニューに[タブの追加]と[タブを閉じる]を追加
menuTab.Items.Add(menuItemAdd);
menuTab.Items.Add(menuItemClose);

// 作成したコンテキストメニューをTabControl1に設定
TabControl1.ContextMenu = menuTab;
タイトルとURLをコピーしました