ContextMenu — Przegląd

Klasa ContextMenu reprezentuje element, który uwidacznia funkcje przy użyciu kontekstu Menu. Zazwyczaj użytkownik uwidacznia ContextMenu element w interfejsie użytkownika, klikając prawym przyciskiem myszy. W tym temacie przedstawiono ContextMenu element i przedstawiono przykłady użycia go w języku Extensible Application Markup Language (XAML) i kodzie.

ContextMenu, kontrolka

A ContextMenu jest dołączony do określonej kontrolki. Element ContextMenu umożliwia przedstawienie użytkownikom listy elementów, które określają polecenia lub opcje skojarzone z określoną kontrolką, na przykład Button. Użytkownicy klikną prawym przyciskiem myszy kontrolkę, aby wyświetlone menu. Zazwyczaj kliknięcie przycisku MenuItem powoduje otwarcie podmenu lub powoduje, że aplikacja wykonuje polecenie.

Tworzenie contextMenus

Poniższe przykłady pokazują, jak utworzyć za pomocą ContextMenu podmenu. Kontrolki ContextMenu są dołączone do kontrolek przycisków.

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

Stosowanie stylów do contextMenu

Za pomocą kontrolki Stylemożna znacząco zmienić wygląd i zachowanie kontrolki bez ContextMenu konieczności pisania kontrolki niestandardowej. Oprócz ustawiania właściwości wizualizacji można również stosować style do części kontrolki. Na przykład można zmienić zachowanie części kontrolki przy użyciu właściwości lub dodać części do obiektu lub zmienić układ obiektu ContextMenu. W poniższych przykładach przedstawiono kilka sposobów dodawania stylów do kontrolek ContextMenu .

W pierwszym przykładzie zdefiniowano styl o nazwie SimpleSysResources, który pokazuje, jak używać bieżących ustawień systemowych w stylu. Przykład przypisuje jako MenuHighlightBrushKey kolor Background i MenuTextBrushKeyForeground jako kolor ContextMenu.

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

W poniższym przykładzie użyto Trigger elementu , aby zmienić wygląd elementu Menu w odpowiedzi na zdarzenia, które są wywoływane w elemencie ContextMenu. Gdy użytkownik przesuwa wskaźnik myszy nad menu, wygląd elementów zmienia ContextMenu się.

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

Zobacz też