ContextMenu — Przegląd

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

ContextMenu, kontrolka

Element A ContextMenu jest dołączony do określonej kontrolki. Element ContextMenu umożliwia prezentowanie użytkownikom listy elementów, które określają polecenia lub opcje skojarzone z określoną kontrolką Button, na przykład . Użytkownicy kliknij prawym przyciskiem myszy kontrolkę, aby wyświetlić menu. Zazwyczaj kliknięcie podmenu MenuItem powoduje otwarcie podmenu lub wykonanie polecenia przez aplikację.

Tworzenie elementu ContextMenus

W poniższych przykładach pokazano, jak utworzyć obiekt ContextMenu z 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 elementu ContextMenu

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

W pierwszym przykładzie zdefiniowano styl o nazwie SimpleSysResources, który pokazuje, jak używać bieżących ustawień systemowych w twoim stylu. Przykład przypisuje MenuHighlightBrushKey jako Background kolor i MenuTextBrushKey jako Foreground kolor elementu 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 obiekcie ContextMenu. Gdy użytkownik przenosi wskaźnik myszy nad menu, zmienia się wygląd ContextMenu elementów.

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