Sdílet prostřednictvím


ContextMenu – přehled

Třída ContextMenu představuje prvek, který zpřístupňuje funkce pomocí kontextově specifické Menu. Uživatel obvykle zpřístupňuje ContextMenu v uživatelském rozhraní pravým tlačítkem myši. Toto téma představuje prvek ContextMenu a obsahuje příklady použití v jazyce XAML (Extensible Application Markup Language) a kódu.

Ovládací prvek ContextMenu

K ovládacímu prvku je připojen specifický identifikátor ContextMenu. Element ContextMenu umožňuje prezentovat uživatele se seznamem položek, které určují příkazy nebo možnosti přidružené k určitému ovládacímu prvku, například Button. Uživatelé kliknou pravým tlačítkem myši na ovládací prvek, aby se nabídka zobrazila. Kliknutím na MenuItem obvykle otevřete podnabídku nebo způsobíte, že aplikace provede příkaz.

Vytváření kontextových nabídek

Následující příklady ukazují, jak vytvořit ContextMenu s podnabídkami. Ovládací prvky ContextMenu jsou připojené k ovládacím prvkům tlačítek.

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

Použití stylů na ContextMenu

Pomocí Styleovládacího prvku můžete výrazně změnit vzhled a chování ContextMenu bez psaní vlastního ovládacího prvku. Kromě nastavení vlastností vizuálu můžete také použít styly na části ovládacího prvku. Můžete například změnit chování částí ovládacího prvku pomocí vlastností, nebo můžete přidat části nebo změnit rozložení ContextMenu. Následující příklady ukazují několik způsobů, jak přidat styly do ovládacích prvků ContextMenu.

První příklad definuje styl s názvem SimpleSysResources, který ukazuje, jak používat aktuální nastavení systému ve vašem stylu. Příklad přiřadí MenuHighlightBrushKey jako barvu Background a MenuTextBrushKey jako Foreground barvu 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>  

Následující příklad používá Trigger ke změně vzhledu Menu v reakci na události, které jsou vyvolány na ContextMenu. Když uživatel přesune myš přes nabídku, vzhled ContextMenu položek se změní.

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

Viz také