Udostępnij za pośrednictwem


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:

Screenshot of menu items in a ListView context menu on 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:

Screenshot of menu items, with an icon, in a ListView context menu on 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 .