2017-07-18 64 views
0

我想在导航栏的左侧设置一个ToolbarItem,但我不知道如何设置它。 Xamarin.Forms的默认ToolbarItem在右侧如何在Xamarin.Forms左侧设置ToolbarItem?

+0

在特定平台上?你会需要一个自定义的渲染器,因为像你说的那样;默认情况下不支持 –

回答

0

在iOS中我使用自定义渲染器,我不认为它有任何方法。在Android中,我并不打扰,因为人们习惯于右侧的项目。下面的渲染器检查是否有多个ToolBarItems,如果是,则将其移动到左侧。

[assembly: ExportRenderer(typeof(ContentPage), typeof(LeftNavigationItemRenderer))] 
namespace MyApp.iOS 
{ 
    public class LeftNavigationItemRenderer : PageRenderer 
    { 
     public override void ViewWillAppear(bool animated) 
     { 
      base.ViewWillAppear(animated); 

      if (NavigationController == null) 
       return; 

      var navigationItem = NavigationController.TopViewController.NavigationItem; 
      var leftNativeButtons = (navigationItem.LeftBarButtonItems ?? new UIBarButtonItem[] { }).ToList(); 
      var rightNativeButtons = (navigationItem.RightBarButtonItems ?? new UIBarButtonItem[] { }).ToList(); 

      if (rightNativeButtons.Count > 1) 
      { 
       var nativeItem = rightNativeButtons.Last(); 
       rightNativeButtons.Remove(nativeItem); 
       leftNativeButtons.Add(nativeItem); 
      } 

      navigationItem.RightBarButtonItems = rightNativeButtons.ToArray(); 
      navigationItem.LeftBarButtonItems = leftNativeButtons.ToArray(); 
     } 
    } 
} 
+0

谢谢,但我想在Xamarin.Forms中实现它,而不是在特定的平台,iOS或Android上实现。 – Jackson

+0

我很抱歉,但这不是Xamarin Forms的工作方式。没有诉诸特定于平台的代码,有些事情根本无法实现,这就是其中之一。开箱即用的Xamarin Forms的功能有限,但它在扩展性方面非常强大。这确实意味着你大多将不得不编写特定于平台的代码。 –

+0

好的,谢谢,我明白了 – Jackson

相关问题