Xamarin.FormsToolbarItem 类是一种特殊类型的按钮,可添加到 Page 对象的 ToolbarItems 集合中。 每个 ToolbarItem 对象都将显示为应用程序导航栏中的一个按钮。 ToolbarItem 实例可以有一个图标,并显示为主要菜单项或辅助菜单项。 ToolbarItem 类继承自 MenuItem。
以下屏幕截图显示了 iOS 和 Android 上的导航栏中的 ToolbarItem 对象:

ToolbarItem 类定义以下属性:
Order是一个ToolbarItemOrder枚举值,用于确定ToolbarItem实例显示在主菜单还是辅助菜单中。Priority是一个integer值,用于确定项在Page对象的ToolbarItems集合中的显示顺序。
ToolbarItem 类从 MenuItem 类继承了以下常用的属性:
Command是一个ICommand,允许将用户操作(如手指点击或单击)绑定到 viewmodel 上定义的命令。CommandParameter是一个object,用于指定应传递给Command的参数。IconImageSource是一个ImageSource值,用于确定ToolbarItem对象上的显示图标。Text是一个string,用于确定ToolbarItem对象上的显示文本。
这些属性由 BindableProperty 对象提供支持,因此 ToolbarItem 实例可以是数据绑定的目标。
注意
从 ToolbarItem 对象创建工具栏的替代方法是将 NavigationPage.TitleView 附加属性设置为包含多个视图的布局类。 有关详细信息,请参阅导航栏中的显示视图。
创建 ToolbarItem
可以在 XAML 中实例化 ToolbarItem 对象。 可以设置 Text 和 IconImageSource 属性来确定按钮在导航栏中的显示方式。 以下示例演示如何实例化设置了一些通用属性的 ToolbarItem,并将其添加到 ContentPage 的 ToolbarItems 集合:
<ContentPage.ToolbarItems>
<ToolbarItem Text="Example Item"
IconImageSource="example_icon.png"
Order="Primary"
Priority="0" />
</ContentPage.ToolbarItems>
此示例将生成一个 ToolbarItem 对象,该对象包含文本和图标,并首先显示在主导航栏区域中。 还可以在代码中创建 ToolbarItem 并将其添加到 ToolbarItems 集合中:
ToolbarItem item = new ToolbarItem
{
Text = "Example Item",
IconImageSource = ImageSource.FromFile("example_icon.png"),
Order = ToolbarItemOrder.Primary,
Priority = 0
};
// "this" refers to a Page object
this.ToolbarItems.Add(item);
每个平台项目中必须存在 string 表示的文件(作为 IconImageSource 提供)。
注意
图像资产在每个平台上以不同的方式进行处理。 ImageSource 可以来自许多源,包括本地文件/嵌入的资源、URI 或流。 若要详细了解任何设置 Xamarin.Forms 中的 IconImageSource 属性和图像,请参阅 Xamarin.Forms 中的图像。
定义按钮行为
ToolbarItem 类从 MenuItem 类继承 Clicked 事件。 事件处理程序可以附加到 Clicked 事件,以响应 XAML 中对 ToolbarItem 实例的点击或单击操作:
<ToolbarItem ...
Clicked="OnItemClicked" />
还可以在代码中附加事件处理程序:
ToolbarItem item = new ToolbarItem { ... }
item.Clicked += OnItemClicked;
前面的示例引用了 OnItemClicked 事件处理程序。 以下代码演示了一个示例实现:
void OnItemClicked(object sender, EventArgs e)
{
ToolbarItem item = (ToolbarItem)sender;
messageLabel.Text = $"You clicked the \"{item.Text}\" toolbar item.";
}
ToolbarItem 对象还可以使用 Command 和 CommandParameter 属性来响应用户输入,而无需事件处理程序。 有关 ICommand 接口和 MVVM 数据绑定的详细信息,请参阅 Xamarin.Forms MenuItem MVVM 行为。
在运行时启用或禁用 ToolbarItem
若要在运行时启用或禁用 ToolbarItem,请将其 Command 属性绑定到 ICommand 实现,并确保 canExecute 委托根据需要启用或禁用 ICommand。
有关详细信息,请参阅在运行时启用或禁用 MenuItem。
主菜单和辅助菜单
ToolbarItemOrder 枚举具有 Default、Primary 和 Secondary 值。
当 Order 属性设置为 Primary 时,ToolbarItem 对象将显示在所有平台上的主导航栏中。 ToolbarItem 对象优先于页面标题,该标题将被截断,以便为项腾出空间。 以下屏幕截图显示了 iOS 和 Android 上的主菜单中的 ToolbarItem 对象:

当 Order 属性设置为 Secondary 时,行为因平台而异。 在 UWP 和 Android 上,Secondary 项菜单显示为三个点,点击或单击它可显示垂直列表中的项。 在 iOS 上,Secondary 项菜单在导航栏下方显示为水平列表。 以下屏幕截图显示 iOS 和 Android 上的辅助菜单:

警告
将 Order 属性设置为 Secondary 的 ToolbarItem 对象中的图标行为因平台而异。 避免在辅助菜单中出现的项目上设置 IconImageSource 属性。