2016-04-25 3 views
3

私はあなたの助けが必要です!XamarinフォームのNavigationBarにビューを含めるにはどうすればいいですか?

私はクロスプラットフォームのモバイル開発プロジェクトに取り組んでいます。私はXamarinフォームでVisual Studioを使用します。私はSearchBar(Xamarin.Formsクラス)​​を持っていますが、私の問題はこれをNavigationBarに含めることです。

現在、私はMasterDetailPageを持っており、新しいnavigationPage(新しいcustomPage())を使ってthis.Detailを初期化します。私はSearchBarレンダラーも持っています。 元のNavigationBar(戻るボタンを残したい)が必要ですが、SearchBarを内部に追加したいと思います。

あなたがアンドロイドにこれを行う方法を知っていれば、私は非常に感謝しています。 ありがとうございます!

Xamarinフォーム::Renderer Base Classes and Native Controls

をナビゲーションバー経由にiOSのUISearchBarを挿入する例としては、カスタムNavigationRendererを作成し、ViewGroupUIToolbarSearchViewに、独自のUISearchBarを挿入する必要があり

答えて

4

カスタム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あなたが持っているアンドロイド.doのための同じ考えが必要です... – SANDEEP

関連する問題