ContextMenu 概觀

類別 ContextMenu 代表使用內容特定的 Menu 來公開功能的專案。 使用者通常會以滑鼠右鍵按一下滑鼠按鍵,以在使用者介面 (UI) 中公開 ContextMenu 。 本主題介紹 元素, ContextMenu 並提供如何使用可延伸應用程式標記語言 (XAML) 和程式碼的範例。

ContextMenu 控制項

ContextMenu附加至特定控制項。 元素 ContextMenu 可讓您向使用者呈現專案清單,這些專案會指定與特定控制項相關聯的命令或選項,例如 。 Button 使用者以滑鼠右鍵按一下控制項,即可顯示功能表。 通常,按一下 MenuItem 會開啟子功能表,或讓應用程式執行命令。

建立 ContextMenu

下列範例示範如何使用 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 色彩和 MenuTextBrushKeyForegroundContextMenu 色彩。

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

另請參閱