本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;

