10.コンテキストメニューを使用する
コンテキストメニューを使用するには ContextMenuクラスを使用します。
メニュー項目は、通常のメニューを作成するときと同様にMenuItemクラスを使用します。
下記はWindowに貼り付けられたTabControlとListBoxにコンテキストメニューを設定する例です。
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>
'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
// 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;
コンテキストメニューを作成するにはContextMenuクラスを使用する。
メニュー項目は通常のメニュー同様MenuItemクラスを使用する。
まとめ
今回はメニューに関するTipsを紹介しました。
アプリケーションを作成する上でメニュー機能は欠かせないものなので、この機会にぜひ習得してはいかがでしょうか。
最後にメニューに関するMSDNのリンクを下記に示します。
