顯示功能表項
.NET 多平臺應用程式 UI (.NET MAUI) MenuItem 類別可用來定義功能表的功能表項,例如 ListView 專案操作功能表和殼層應用程式飛出視窗功能表。
下列螢幕快照顯示 MenuItem Android 操作選單中的物件 ListView :
類別 MenuItem 會定義下列屬性:
- Command型 ICommand別為 的 ,允許將用戶動作,例如手指點選或按兩下,系結至 ViewModel 上定義的命令。
- CommandParameter型
object
別為 的 ,指定應該傳遞至 的參數Command
。 - IconImageSource型 ImageSource別為 的 ,會定義功能表項圖示。
- IsDestructive型
bool
別為 的 ,表示 是否會 MenuItem 從清單中移除其相關聯的UI元素。 - IsEnabled型
bool
別為 的 ,表示功能表項是否回應使用者輸入。 - Text型
string
別為 的 ,指定功能表項文字。
這些屬性是由 BindableProperty 物件所支援,這表示這些屬性可以是數據系結的目標。
建立 MenuItem
若要建立功能表項,例如做為物件專案上的ListView操作功能表,請在物件內ViewCell建立 MenuItem 物件,該物件會當做 DataTemplate 的ListViewItemTemplate
物件。 ListView當物件填入時,它會使用 DataTemplate來建立每個專案,以MenuItem在項目啟動操作功能表時公開選項。
下列範例示範如何在 物件的內容ListView中建立 MenuItem :
<ListView>
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>
<ViewCell.ContextActions>
<MenuItem Text="Context menu option" />
</ViewCell.ContextActions>
<Label Text="{Binding .}" />
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
此範例會產生 MenuItem 具有文字的物件。 不過,不同平台的外觀 MenuItem 會有所不同。
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
};
中的 ListView 操作功能表會啟動,並在每個平臺上以不同的方式顯示。 在Android上,操作功能表會由清單專案上的長按來啟動。 操作選單會取代標題和導覽列區域,選項 MenuItem 會顯示為水平按鈕。 在iOS上,操作功能表會藉由在清單專案上撥動來啟動。 操作功能表會顯示在清單專案上,並 MenuItems
顯示為水平按鈕。 在 Windows 上,以滑鼠右鍵按下清單專案,即可啟動操作選單。 操作功能表會在游標附近顯示為垂直清單。
定義 MenuItem 行為
類別 MenuItem 會 Clicked 定義事件。 事件處理程式可以附加至此事件,以回應點選或按兩下 MenuItem 物件:
<MenuItem ...
Clicked="OnItemClicked" />
事件處理程式也可以在程式代碼中附加:
MenuItem item = new MenuItem { ... };
item.Clicked += OnItemClicked;
這些範例會參考 OnItemClicked
事件處理程式,如下列範例所示:
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
}
定義 MenuItem 的外觀
圖示是使用 IconImageSource 屬性來指定。 如果指定圖示,則不會顯示 屬性所 Text 指定的文字。 下列螢幕快照顯示 MenuItem Android 上具有圖示的 :
MenuItem 物件只會在 Android 上顯示圖示。 在其他平臺上,只會顯示 屬性所 Text 指定的文字。
注意
影像可以儲存在應用程式專案中的單一位置。 如需詳細資訊,請參閱 將映像新增至 .NET MAUI 專案。
在運行時間啟用或停用 MenuItem
若要在執行時間開啟或停用 MenuItem ,請將其 Command
屬性系結至 ICommand 實作,並確定 canExecute
委派會適當地啟用和停用 ICommand 。
重要
使用 Command
屬性來啟用或停用 MenuItem時,請勿將 IsEnabled
屬性系結至另一個屬性。