我正在开发一个适用于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>
答案 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>