ContextMenu の概要
ContextMenu クラスは、コンテキスト固有の Menuを使用して機能を公開する要素を表します。 通常、ユーザーはマウス ボタンを右クリックして、ユーザー インターフェイス (UI) で ContextMenu を公開します。 このトピックでは、ContextMenu 要素について説明し、拡張アプリケーション マークアップ言語 (XAML) とコードで使用する方法の例を示します。
コンテキストメニュー コントロール
ContextMenu は特定のコントロールにアタッチされます。 ContextMenu 要素を使用すると、特定のコントロールに関連付けられているコマンドまたはオプションを指定する項目の一覧 (Buttonなど) をユーザーに表示できます。 ユーザーはコントロールを右クリックしてメニューを表示します。 通常、MenuItem をクリックするとサブメニューが開くか、アプリケーションでコマンドが実行されます。
ContextMenus の作成
次の例では、サブメニューを含む ContextMenu を作成する方法を示します。 ContextMenu コントロールはボタン コントロールにアタッチされます。
<Button Name="cmButton" Height="30">
Button with Context Menu
<Button.ContextMenu>
<ContextMenu Name="cm" Opened="OnOpened" Closed="OnClosed" StaysOpen="true">
<MenuItem Header="File"/>
<MenuItem Header="Save"/>
<MenuItem Header="SaveAs"/>
<MenuItem Header="Recent Files">
<MenuItem Header="ReadMe.txt"/>
<MenuItem Header="Schedule.xls"/>
</MenuItem>
</ContextMenu>
</Button.ContextMenu>
</Button>
btn = new Button();
btn.Content = "Created with C#";
contextmenu = new ContextMenu();
btn.ContextMenu = contextmenu;
mi = new MenuItem();
mi.Header = "File";
mia = new MenuItem();
mia.Header = "New";
mi.Items.Add(mia);
mib = new MenuItem();
mib.Header = "Open";
mi.Items.Add(mib);
mib1 = new MenuItem();
mib1.Header = "Recently Opened";
mib.Items.Add(mib1);
mib1a = new MenuItem();
mib1a.Header = "Text.xaml";
mib1.Items.Add(mib1a);
contextmenu.Items.Add(mi);
cv2.Children.Add(btn);
Dim btn As New Button()
Dim contextmenu As New ContextMenu()
Dim mi As New MenuItem()
Dim mia As New MenuItem()
btn.Background = Brushes.Red
btn.Height = 30
btn.Content = "Created with Visual Basic."
mi.Header = ("Item 1")
contextmenu.Items.Add(mi)
mia.Header = ("Item 2")
contextmenu.Items.Add(mia)
btn.ContextMenu = (contextmenu)
cv2.Children.Add(btn)
ContextMenu にスタイルを適用する
コントロール Styleを使用すると、カスタム コントロールを記述することなく、ContextMenu の外観と動作を大幅に変更できます。 ビジュアル プロパティを設定するだけでなく、コントロールの一部にスタイルを適用することもできます。 たとえば、プロパティを使用してコントロールの一部の動作を変更したり、ContextMenuのレイアウトにパーツを追加したり、レイアウトを変更したりできます。 次の例では、ContextMenu コントロールにスタイルを追加する方法をいくつか示します。
最初の例では、SimpleSysResources
というスタイルを定義します。このスタイルでは、現在のシステム設定をスタイルで使用する方法を示します。 この例では、MenuHighlightBrushKey を Background の色として割り当て、MenuTextBrushKey を ContextMenuの Foreground 色として割り当てます。
<Style x:Key="SimpleSysResources" TargetType="{x:Type MenuItem}">
<Setter Property = "Background" Value=
"{DynamicResource {x:Static SystemColors.MenuHighlightBrushKey}}"/>
<Setter Property = "Foreground" Value=
"{DynamicResource {x:Static SystemColors.MenuTextBrushKey}}"/>
</Style>
次の例では、Trigger 要素を使用して、ContextMenuで発生したイベントに応答して Menu の外観を変更します。 ユーザーがメニューの上にマウスを移動すると、ContextMenu 項目の外観が変わります。
<Style x:Key="Triggers" TargetType="{x:Type MenuItem}">
<Style.Triggers>
<Trigger Property="MenuItem.IsMouseOver" Value="true">
<Setter Property = "FontSize" Value="16"/>
<Setter Property = "FontStyle" Value="Italic"/>
<Setter Property = "Foreground" Value="Red"/>
</Trigger>
</Style.Triggers>
</Style>
関連項目
.NET Desktop feedback