将BoxView或框架的高度绑定到Xamarin中的(隐藏)导航栏
我不想在主页上使用标准导航栏,而是想隐藏该导航栏并加载一个自定义导航栏。我认为使用BoxView(编辑:)框架是最好的方法。但是,如何将BoxView的高度(请求)绑定到(隐藏的)导航栏(最好是Xaml)将BoxView或框架的高度绑定到Xamarin中的(隐藏)导航栏,xamarin,navigationbar,custom-view,Xamarin,Navigationbar,Custom View,我不想在主页上使用标准导航栏,而是想隐藏该导航栏并加载一个自定义导航栏。我认为使用BoxView(编辑:)框架是最好的方法。但是,如何将BoxView的高度(请求)绑定到(隐藏的)导航栏(最好是Xaml) (boxview的框架应具有相同的方法)对于两个常用控件,您可以像这样将一个控件的高度绑定到另一个控件(以boxview和按钮为例): 嘿,我想我们误会了。我想让BoxView元素具有与navigationbar相同的高度,以创建自定义元素。我想编辑BoxView(或框架)的高度,而不是导航栏
(boxview的框架应具有相同的方法)对于两个常用控件,您可以像这样将一个控件的高度绑定到另一个控件(以boxview和按钮为例):
嘿,我想我们误会了。我想让BoxView元素具有与navigationbar相同的高度,以创建自定义元素。我想编辑BoxView(或框架)的高度,而不是导航栏。我已经更新了答案,您可以查看。希望它能帮助您。如果您使用自定义控件,有趣的是,您根本不需要系统高度,因为您可以使用自己的控件。假设你需要50而不是47。所以手动设置。另一个不同点是,如果是无框架ios设备或ios top calling或调制解调器共享栏,则需要知道状态栏和页面插入的高度。
<BoxView Color="Yellow"
x:Name="testbox"
WidthRequest="160"
HeightRequest="60"
VerticalOptions="Center"
HorizontalOptions="Center" />
<Button Text="test..."
BindingContext="{x:Reference testbox}"
WidthRequest="160"
HeightRequest="{Binding Path=HeightRequest}"/>
public class NaviRendererForAndroid : NavigationPageRenderer
{
public CustomNaviForAndroid(Context context) : base(context)
{
}
protected override void
OnElementChanged(ElementChangedEventArgs<NavigationPage> e)
{
base.OnElementChanged(e);
var height = 0;
Resources resources = Context.Resources;
int resourceId = resources.GetIdentifier("navigation_bar_height", "dimen", "android");
if (resourceId > 0)
{
height = resources.GetDimensionPixelSize(resourceId);
}
}
}
public class NaviRendererForiOS : NavigationRenderer
{
protected override void OnElementChanged(VisualElementChangedEventArgs e)
{
base.OnElementChanged(e);
var height = NavigationBar.Bounds.Height;
}
}