Megosztás a következőn keresztül:


A ContextMenu áttekintése

A ContextMenu osztály azt az elemet jelöli, amely egy környezetspecifikus Menuhasználatával teszi elérhetővé a funkciókat. A felhasználó általában az egérgomb jobb gombbal történő kattintásával teszi elérhetővé a ContextMenu a felhasználói felületen. Ez a témakör bemutatja a ContextMenu elemet, és példákat tartalmaz arra, hogyan használható az XAML(Extensible Application Markup Language) és a kód használatával.

ContextMenu vezérlő

Egy ContextMenu egy adott vezérlőhöz van csatolva. A ContextMenu elem lehetővé teszi, hogy a felhasználók számára egy listát jelenítsünk meg olyan elemekkel, amelyek egy adott vezérlőelemhez, például egy Button-hez, társított parancsokat vagy beállításokat határoznak meg. A felhasználók a jobb gombbal a vezérlőre kattintva megjeleníthetik a menüt. Egy MenuItem kattintva általában megnyílik egy almenü, vagy egy alkalmazás parancsot hajt végre.

ContextMenus létrehozása

Az alábbi példák mutatják be, hogyan lehet létrehozni egy ContextMenu-t almenükkel. A ContextMenu vezérlők a gombvezérlőkhöz vannak csatolva.

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

Stílusok alkalmazása a ContextMenu-ra

A vezérlők Stylehasználatával jelentősen megváltoztathatja a ContextMenu megjelenését és viselkedését anélkül, hogy egyéni vezérlőt írnál. A vizualizáció tulajdonságainak megadása mellett stílusokat is alkalmazhat a vezérlők egyes részeire. Módosíthatja például a vezérlő egyes részeinek viselkedését tulajdonságok használatával, vagy hozzáadhat alkatrészeket egy ContextMenuelrendezéséhez, illetve módosíthatja annak elrendezését. Az alábbi példák számos módszert mutatnak be stílusok hozzáadására ContextMenu vezérlőkhöz.

Az első példa egy SimpleSysResourcesnevű stílust határoz meg, amely bemutatja, hogyan használhatja az aktuális rendszerbeállításokat a stílusában. A példa a MenuHighlightBrushKeyBackground színként, a MenuTextBrushKey pedig a ForegroundContextMenu színeként rendeli hozzá.

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

Az alábbi példa a Trigger elemet használja egy Menu megjelenésének módosítására a ContextMenueseményeire válaszul. Amikor egy felhasználó az egeret a menü fölé helyezi, a ContextMenu elemek megjelenése megváltozik.

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

Lásd még