ContextMenu — omówienie
Klasa ContextMenu reprezentuje element, który uwidacznia funkcje przy użyciu Menuspecyficznego dla kontekstu. Zazwyczaj użytkownik uwidacznia ContextMenu w interfejsie użytkownika, klikając prawym przyciskiem myszy przycisk myszy. W tym temacie przedstawiono element ContextMenu i przedstawiono przykłady użycia go w języku Extensible Application Markup Language (XAML) i kodzie.
Kontrolka menu kontekstowego
Do określonej kontrolki jest dołączony ContextMenu. Element ContextMenu umożliwia prezentowanie użytkownikom listy elementów, które określają polecenia lub opcje skojarzone z określoną kontrolką, na przykład Button. Użytkownicy kliknij prawym przyciskiem myszy kontrolkę, aby wyświetlić menu. Zazwyczaj kliknięcie MenuItem otwiera podmenu lub powoduje wykonanie polecenia przez aplikację.
Tworzenie elementu ContextMenus
W poniższych przykładach pokazano, jak utworzyć ContextMenu za pomocą 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 ContextMenu bez potrzeby tworzenia 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, dodać części do ContextMenulub zmienić jego układ. W poniższych przykładach pokazano 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 twoim stylu. Przykład przypisuje MenuHighlightBrushKey jako kolor Background i MenuTextBrushKey jako kolor ForegroundContextMenu.
<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 elementu Trigger, aby zmienić wygląd Menu w odpowiedzi na zdarzenia zgłaszane w ContextMenu. Gdy użytkownik przenosi wskaźnik myszy nad menu, zmienia się wygląd elementów 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>
Zobacz też
- ContextMenu
- Style
- Menu
- MenuItem
- Menu kontekstowe
- ContextMenu Style i szablony
- Przykład galerii kontrolek WPF
.NET Desktop feedback