Share via


ContextMenu 概觀

更新:2007 年 11 月

ContextMenu 類別代表利用內容相關 Menu 公開功能的項目。使用者通常都會透過按一下滑鼠右鍵的方式,在使用者介面 (UI) 中公開 ContextMenu。本主題將介紹 ContextMenu 項目,並提供如何在可延伸標記語言 (XAML) 和程式碼中使用該項目的範例。

這個主題包含下列章節。

  • ContextMenu 控制項
  • 建立 ContextMenu
  • 將樣式套用至 ContextMenu
  • 相關主題

ContextMenu 控制項

ContextMenu 會附加至特定控制項。ContextMenu 項目可讓您對使用者顯示一份項目清單,其中的項目指定了與特定控制項 (例如 Button) 相關聯的命令或選項。使用者以滑鼠右鍵按一下該控制項即可顯示功能表。一般來說,按一下 MenuItem 會開啟子功能表,或使應用程式執行命令。

建立 ContextMenu

下列範例顯示如何建立具有子功能表的 ContextMenuContextMenu 控制項會附加到按鈕控制項。

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

將樣式套用至 ContextMenu

藉由使用控制項 Style,您可以動態變更 ContextMenu 的外觀和行為,而不需要撰寫自訂控制項。除了設定視覺屬性之外,您也可以將樣式套用到控制項的各部分。例如,您可以使用屬性變更控制項各部分的行為,也可以增加 ContextMenu 的部分或變更其配置。下列範例顯示將樣式加入到 ContextMenu 控制項的幾種方式。

第一個範例會定義一個名為 SimpleSysResources 的樣式,顯示如何在樣式中使用目前的系統設定。這個範例將 MenuHighlightBrushKey 指派為 ContextMenuBackground 色彩,並將 MenuTextBrushKey 指派為其 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 項目變更 Menu 的外觀,以回應 ContextMenu 上引發的事件。當使用者將滑鼠移到功能表上方時,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>

請參閱

工作

WPF 控制項圖庫範例

概念

ContextMenu ControlTemplate 範例

參考

ContextMenu

Style

Menu

MenuItem

其他資源

ContextMenu