public partial class CustomNavigationBar : ContentView
{
public CustomNavigationBar()
{
InitializeComponent();
}
void btnBack_Clicked(System.Object sender, System.EventArgs e)
{
Navigation.PopAsync();
}
void btnHome_Clicked(System.Object sender, System.EventArgs e)
{
Navigation.PopToRootAsync();
}
public static readonly BindableProperty TitleTextProperty = BindableProperty.Create(
nameof(TitleText),
typeof(string),
typeof(CustomNavigationBar),
defaultValue: string.Empty,
BindingMode.OneWay,
propertyChanged: titleBindablePropertyChanged);
private static void titleBindablePropertyChanged(BindableObject bindable, object oldValue, object newValue)
{
var control = (CustomNavigationBar)bindable;
control.lblBarTitle.Text = newValue.ToString();
//throw new NotImplementedException();
}
public string TitleText
{
get { return base.GetValue(TitleTextProperty).ToString(); }
set { base.SetValue(TitleTextProperty, value); }
}
}
最后将视图放置在要使用的页面中 例如在页面XAML中使用以下代码
页面的XAML代码
<ContentPage.Content>
<VerticalStackLayout>
<!--NAVIGATION BAR-->
<CustomViews:CustomNavigationBar Grid.Row="0" TitleText="{Binding Settings}"/>
<!--place here you other stuff of your page....-->
</VerticalStackLayout>
</ContentPage.Content>
2条答案
按热度按时间6kkfgxo01#
正如Jason和Steve所建议的,您可以使用
Shell.TitleView
来实现添加的按钮。例如,下面的XAML显示了在导航栏中显示Button
:或者您可以使用
Toolbar Items
,如下所示:但是它需要一个
Navigation
页面来显示它们。所以,你需要修改由导航页面 Package 的MainPage
:sq1bmfud2#
**不能使用标准导航(标题)栏执行此操作。**必须在页面
NavigationPage.HasNavigationBar="False"
的xaml标题中使用以下命令从代码中禁用标准导航栏然后,你必须创建一个自定义导航栏(使用xaml内容视图,小心使用内容视图,而不是内容页面)与后退按钮和所有其他你想放置。
内容视图的XAML代码
内容视图的代码隐藏
最后将视图放置在要使用的页面中
例如在页面XAML中使用以下代码
页面的XAML代码