如何在Xamarin表单的NavigationBar中包含视图?
问题描述:
我需要你的帮助!如何在Xamarin表单的NavigationBar中包含视图?
我从事跨平台的移动开发项目。我用Xamarin Forms使用Visual Studio。我有一个SearchBar(Xamarin.Forms类),但是,我的问题是将其包含到NavigationBar中。
目前,我有一个MasterDetailPage,我用new NavigationPage(new customPage())初始化了这个.Detail。我也有一个SearchBar渲染器。 所以,我需要原始NavigationBar(我想保留返回按钮),但我想添加我的SearchBar里面。
如果你知道一种特别针对android的方法,我将不胜感激。 提前谢谢!
答
你需要创建一个自定义NavigationRenderer
并插入自己的UISearchBar
到UIToolbar
或SearchView
到ViewGroup
:
Xamarin形式:Renderer Base Classes and Native Controls
由于插入的iOS UISearchBar
到导航栏通过的例子自定义NavigationRenderer
:
注意:为了保持事物解耦,使用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();
}
}
}
得到了一些代码让这个工作在Android自定义渲染器? :) – jdstaerk
@DDerType我需要相同的想法android.do你有... – SANDEEP