Zobrazit položky nabídky
Třídu .NET Multi-Platform App UI (.NET MAUI) MenuItem lze použít k definování položek nabídky pro nabídky, jako ListView jsou místní nabídky položek a kontextové nabídky aplikace Shell.
Následující snímky obrazovky znázorňují MenuItem objekty v místní nabídce v Androidu ListView :
Třída MenuItem definuje následující vlastnosti:
- Command, typu ICommand, umožňuje vazbu uživatelských akcí, jako jsou klepnutí prstem nebo kliknutí, k příkazům definovaným v modelu viewmodel.
- CommandParameter, typu
object
, určuje parametr, který má být předán doCommand
. - IconImageSource, typu ImageSource, definuje ikonu položky nabídky.
- IsDestructive, typu
bool
, označuje, zda MenuItem odebere jeho přidružený prvek uživatelského rozhraní ze seznamu. - IsEnabled, typu
bool
označuje, zda položka nabídky reaguje na vstup uživatele. - Text, typu
string
, určuje text položky nabídky.
Tyto vlastnosti jsou podporovány BindableProperty objekty, což znamená, že mohou být cílem datových vazeb.
Vytvoření položky MenuItem
Pokud chcete vytvořit položku nabídky, například jako místní nabídku položek ListView objektu, vytvořte MenuItem objekt v objektuViewCell, který se používá jako DataTemplate objekt pro ListViewobjekt .ItemTemplate
ListView Když je objekt naplněn, vytvoří každou položku pomocí DataTemplate, zobrazí MenuItem volby při aktivaci místní nabídky pro položku.
Následující příklad ukazuje, jak vytvořit MenuItem v kontextu objektu ListView :
<ListView>
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>
<ViewCell.ContextActions>
<MenuItem Text="Context menu option" />
</ViewCell.ContextActions>
<Label Text="{Binding .}" />
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
Výsledkem tohoto příkladu MenuItem bude objekt, který obsahuje text. Vzhled se MenuItem ale liší na různých platformách.
V kódu lze také vytvořit A MenuItem :
// 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
};
Místní nabídka v místní ListView nabídce je aktivována a zobrazena odlišně na každé platformě. V Androidu je místní nabídka aktivovaná dlouhým stisknutím položky seznamu. Místní nabídka nahradí oblast a oblast navigačního panelu a MenuItem možnosti jako vodorovná tlačítka. V iOSu je místní nabídka aktivována potažením prstu na položce seznamu. V položce seznamu se zobrazí místní nabídka a MenuItems
zobrazí se jako vodorovná tlačítka. Ve Windows je místní nabídka aktivována kliknutím pravým tlačítkem myši na položku seznamu. Místní nabídka se zobrazí poblíž kurzoru jako svislý seznam.
Definování chování MenuItem
Třída MenuItem definuje Clicked událost. Obslužná rutina události může být připojena k této události, aby reagovala na klepnutí nebo kliknutí na MenuItem objekty:
<MenuItem ...
Clicked="OnItemClicked" />
Obslužnou rutinu události lze připojit také v kódu:
MenuItem item = new MenuItem { ... };
item.Clicked += OnItemClicked;
Tyto příklady odkazují na obslužnou rutinu OnItemClicked
události, která je znázorněna v následujícím příkladu:
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
}
Definování vzhledu MenuItem
Ikony se zadají pomocí IconImageSource vlastnosti. Pokud je zadána ikona, text určený Text vlastností se nezobrazí. Následující snímek obrazovky ukazuje ikonu s ikonou MenuItem v Androidu:
MenuItem objekty zobrazují jenom ikony v Androidu. Na jiných platformách se zobrazí pouze text určený Text vlastností.
Poznámka:
Obrázky se dají ukládat do jednoho umístění v projektu aplikace. Další informace najdete v tématu Přidání obrázků do projektu .NET MAUI.
Povolení nebo zakázání MenuItem za běhu
Chcete-li povolit nebo zakázat MenuItem za běhu, vytvořte vazbu jeho Command
vlastnosti na ICommand implementaci a ujistěte se, že canExecute
delegát povolí a zakáže ICommand podle potřeby.
Důležité
Při použití Command
vlastnosti k povolení nebo zakázání vlastnosti nevážete IsEnabled
vlastnost na jinou MenuItemvlastnost .