2016-04-25 64 views
3

我需要你的幫助!如何在Xamarin表單的NavigationBar中包含視圖?

我從事跨平臺的移動開發項目。我用Xamarin Forms使用Visual Studio。我有一個SearchBar(Xamarin.Forms類),但是,我的問題是將其包含到NavigationBar中。

目前,我有一個MasterDetailPage,我用new NavigationPage(new customPage())初始化了這個.Detail。我也有一個SearchBar渲染器。 所以,我需要原始NavigationBar(我想保留返回按鈕),但我想添加我的SearchBar裏面。

如果你知道一種特別針對android的方法,我將不勝感激。 提前謝謝!

回答

4

你需要創建一個自定義NavigationRenderer並插入自己的UISearchBarUIToolbarSearchViewViewGroup

Xamarin形式:Renderer Base Classes and Native Controls

由於插入的iOS UISearchBar到導航欄通過的例子自定義NavigationRenderer

enter image description here

注意:爲了保持事物解耦,使用MessagingCenter可讓您在自定義渲染器內沒有任何硬編碼事件依賴關係的情況下抽取消息。

[assembly:ExportRenderer (typeof(NavigationPage), typeof(SeachBarNavigationRender))] 
namespace Forms.Life.Cycle.iOS 
{ 
    public class SeachBarNavigationRender : NavigationRenderer 
    { 
     public SeachBarNavigationRender() : base() 
     { 
     } 

     public override void PushViewController (UIViewController viewController, bool animated) 
     { 
      base.PushViewController (viewController, animated); 
      List<UIBarButtonItem> toolbarItem = new List<UIBarButtonItem>(); 
      foreach (UIBarButtonItem barButtonItem in TopViewController.NavigationItem.RightBarButtonItems) { 
       if (barButtonItem.Title.Contains("search")) { 
        UISearchBar search = new UISearchBar (new CGRect (0, 0, 200, 25)); 
        search.BackgroundColor = UIColor.LightGray; 
        search.SearchBarStyle = UISearchBarStyle.Prominent; 
        search.TextChanged += (object sender, UISearchBarTextChangedEventArgs e) => { 
         D.WriteLine(e.SearchText); 
         MessagingCenter.Send<object, string> (this, "SearchText", e.SearchText); 
        }; 
        barButtonItem.CustomView = search; 
       } 
       toolbarItem.Add (barButtonItem); 
      } 
      TopViewController.NavigationItem.RightBarButtonItems = toolbarItem.ToArray(); 
     } 
    } 
} 
+1

得到了一些代碼讓這個工作在Android自定義渲染器? :) – jdstaerk

+1

@DDerType我需要相同的想法android.do你有... – SANDEEP

相關問題