Wyświetl elementy menu
Klasa interfejsu użytkownika aplikacji wieloplatformowej platformy .NET (.NET MAUI) MenuItem może służyć do definiowania elementów menu dla menu, takich jak ListView menu kontekstowe elementów i menu wysuwane aplikacji powłoki.
Poniższe zrzuty ekranu pokazują MenuItem obiekty w menu kontekstowym ListView w systemie Android:
Klasa MenuItem definiuje następujące właściwości:
- Command, typu ICommand, umożliwia powiązanie akcji użytkownika, takich jak naciśnięcia palca lub kliknięcia, do poleceń zdefiniowanych na modelu widoków.
- CommandParameter, typu
object
, określa parametr, który ma zostać przekazany do .Command
- IconImageSource, typu ImageSource, definiuje ikonę elementu menu.
- IsDestructive, typu
bool
, wskazuje, czy MenuItem element skojarzonego interfejsu użytkownika zostanie usunięty z listy. - IsEnabled, typu
bool
, wskazuje, czy element menu odpowiada na dane wejściowe użytkownika. - Text, typu
string
, określa tekst elementu menu.
Te właściwości są wspierane przez BindableProperty obiekty, co oznacza, że mogą być obiektami docelowymi powiązań danych.
Tworzenie elementu MenuItem
Aby utworzyć element menu, na przykład jako menu kontekstowe w ListView elementach obiektu, utwórz MenuItem obiekt w ViewCell obiekcie, który jest używany jako DataTemplate obiekt dla ListViewobiektu ItemTemplate
. ListView Gdy obiekt zostanie wypełniony, utworzy każdy element przy użyciu DataTemplateelementu , uwidaczniając MenuItem opcje po aktywowaniu menu kontekstowego dla elementu.
W poniższym przykładzie pokazano, jak utworzyć obiekt MenuItem w kontekście ListView obiektu:
<ListView>
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>
<ViewCell.ContextActions>
<MenuItem Text="Context menu option" />
</ViewCell.ContextActions>
<Label Text="{Binding .}" />
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
W tym przykładzie zostanie wyświetlony MenuItem obiekt zawierający tekst. Jednak wygląd elementu MenuItem różni się na różnych platformach.
Element MenuItem można również utworzyć w kodzie:
// Return a ViewCell instance that is used as the template for each list item
DataTemplate dataTemplate = new DataTemplate(() =>
{
// A Label displays the list item text
Label label = new Label();
label.SetBinding(Label.TextProperty, ".");
// A ViewCell serves as the DataTemplate
ViewCell viewCell = new ViewCell
{
View = label
};
// Add a MenuItem to the ContextActions
MenuItem menuItem = new MenuItem
{
Text = "Context Menu Option"
};
viewCell.ContextActions.Add(menuItem);
// Return the custom ViewCell to the DataTemplate constructor
return viewCell;
});
ListView listView = new ListView
{
...
ItemTemplate = dataTemplate
};
Menu kontekstowe w obiekcie ListView jest aktywowane i wyświetlane inaczej na każdej platformie. W systemie Android menu kontekstowe jest aktywowane przez długie naciśnięcie elementu listy. Menu kontekstowe zastępuje obszar tytułu i paska nawigacyjnego, a MenuItem opcje są wyświetlane jako przyciski poziome. W systemie iOS menu kontekstowe jest aktywowane przez przesunięcie na elemencie listy. Menu kontekstowe jest wyświetlane w elemencie listy i MenuItems
są wyświetlane jako przyciski poziome. W systemie Windows menu kontekstowe jest aktywowane, klikając prawym przyciskiem myszy element listy. Menu kontekstowe jest wyświetlane w pobliżu kursora jako pionowej listy.
Definiowanie zachowania menuItem
Klasa MenuItem definiuje Clicked zdarzenie. Program obsługi zdarzeń można dołączyć do tego zdarzenia, aby reagować na naciśnięcia lub kliknięcia MenuItem obiektów:
<MenuItem ...
Clicked="OnItemClicked" />
Program obsługi zdarzeń można również dołączyć w kodzie:
MenuItem item = new MenuItem { ... };
item.Clicked += OnItemClicked;
Te przykłady odwołują się do OnItemClicked
procedury obsługi zdarzeń, która jest pokazana w poniższym przykładzie:
void OnItemClicked(object sender, EventArgs e)
{
MenuItem menuItem = sender as MenuItem;
// Access the list item through the BindingContext
var contextItem = menuItem.BindingContext;
// Do something with the contextItem here
}
Definiowanie wyglądu menuItem
Ikony są określane przy użyciu IconImageSource właściwości . Jeśli zostanie określona ikona, tekst określony przez Text właściwość nie będzie wyświetlany. Poniższy zrzut ekranu przedstawia MenuItem ikonę w systemie Android:
MenuItem obiekty wyświetlają tylko ikony w systemie Android. Na innych platformach zostanie wyświetlony tylko tekst określony przez Text właściwość.
Uwaga
Obrazy mogą być przechowywane w jednej lokalizacji w projekcie aplikacji. Aby uzyskać więcej informacji, zobacz Dodawanie obrazów do projektu .NET MAUI.
Włączanie lub wyłączanie elementu MenuItem w czasie wykonywania
Aby włączyć lub wyłączyć środowisko uruchomieniowe, powiąż MenuItem jego Command
właściwość z implementacją ICommand i upewnij się, że canExecute
delegat włącza i wyłącza ICommand odpowiednio.
Ważne
Nie powiąż właściwości z IsEnabled
inną właściwością w Command
celu włączenia MenuItemlub wyłączenia właściwości .