如何在Xamarin.Forms中仅为iOS显示ToolbarItem?

时间:2018-03-13 17:39:24

标签: xaml xamarin xamarin.forms

我正在开发一个适用于iOS和Android的Xamarin.Forms的应用程序,我有一个页面,我想要只为iOS应用程序显示ToolbarItem。在Android中,我想在页面内使用一个按钮。我怎样才能做到这一点?我在Android中添加了一个带有空白文本的ToolbarItem,但我认为这不是正确的方法。

这是我的页面xaml代码:

<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
         xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
         xmlns:prism="clr-namespace:Prism.Mvvm;assembly=Prism.Forms"
         prism:ViewModelLocator.AutowireViewModel="True"
         x:Class="VFood.Views.Garcons">

<ContentPage.Content>
    <StackLayout>
        <Label Text="Garçons"
            VerticalOptions="CenterAndExpand" 
            HorizontalOptions="CenterAndExpand" />
    </StackLayout>
</ContentPage.Content>
<ContentPage.ToolbarItems>
    <OnPlatform x:TypeArguments="ToolbarItem">
        <OnPlatform.iOS>
            <ToolbarItem Text="Adicionar"/>
        </OnPlatform.iOS>
        <OnPlatform.Android>
            <ToolbarItem Text=""/>
        </OnPlatform.Android>
    </OnPlatform>
</ContentPage.ToolbarItems>

2 个答案:

答案 0 :(得分:1)

我在XAML中也有 null reference 例外,但是对我有用的是在后台代码中这样做:

public partial class Garcons
{
    public Garcons()
    {
        InitializeComponent();
        if (Device.RuntimePlatform == Device.iOS)
        {
            var myToolbarItem = new ToolbarItem()
            {
                Icon = "myIcon.png",
                Order = ToolbarItemOrder.Primary,
                Priority = 0,
                Text = "MyToolbarItem"
            };

            myToolbarItem.SetBinding(MenuItem.CommandProperty, "MyToolbarItemCommand");
            ToolbarItems.Insert(0, myToolbarItem);
        }
    }
}

上面的代码等效于此XAML版本:

<ToolbarItem Icon="myIcon.png" Order="Primary" Priority="0"
  Text="MyToolbarItem" Command="{Binding MyToolbarItemCommand}"/>

答案 1 :(得分:0)

不要为您不想拥有的平台指定任何内容

<ContentPage.ToolbarItems>
    <OnPlatform x:TypeArguments="ToolbarItem">
        <OnPlatform.iOS>
            <ToolbarItem Text="Adicionar"/>
        </OnPlatform.iOS>
    </OnPlatform>
</ContentPage.ToolbarItems>