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のリンクを下記に示します。