我有一个NavigationPage.TitleView,其中包括带有图像的标签(如果我希望在所有页面上使用该图像)是否将其添加到MasterDetailPage中? NavigationPage在MasterDetailPage上不可用,如果我将其添加到菜单页面,它将不会显示。它会从默认主页显示的唯一页面是什么?
MainPage.xaml
<MasterDetailPage.Master>
<pages:MenuPage x:Name="menuPage"/>
</MasterDetailPage.Master>
<MasterDetailPage.Detail>
<NavigationPage>
<x:Arguments>
<pages:HomePage />
</x:Arguments>
</NavigationPage>
</MasterDetailPage.Detail>
HomePage.xaml
<NavigationPage.TitleView>
<StackLayout Orientation="Horizontal" BackgroundColor="#22335c" >
<Label Text="App Name" HorizontalOptions="FillAndExpand" VerticalOptions="CenterAndExpand" BackgroundColor="#22335c" TextColor="White" HorizontalTextAlignment="Center" />
<Image Source="icon.jpg" Aspect="AspectFit" BackgroundColor="#22335c" />
</StackLayout>
</NavigationPage.TitleView>
答案 0 :(得分:0)
您可以尝试创建自定义渲染器,并将其设置为应用程序中所有页面的基类。在此自定义渲染器中,您可以尝试将Label和图像源添加到导航栏。
public class NavigationRenderer : PageRenderer
{
private CustomTitleView _titleView;
public NavigationSearchRenderer(Context context) : base(context)
{
}
protected override void OnElementChanged(ElementChangedEventArgs<Page> e)
{
base.OnElementChanged(e);
var navPage = Element as NavigationSearchPage;
if (navPage == null)
return;
var activity = this.Context as FormsAppCompatActivity;
if (activity == null)
return;
var toolbar = activity.FindViewById<Android.Support.V7.Widget.Toolbar>(Resource.Id.toolbar);
_titleView= new TitleView(Context);
toolbar.AddView(_titleView);
}
}