Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将BoxView或框架的高度绑定到Xamarin中的(隐藏)导航栏_Xamarin_Navigationbar_Custom View - Fatal编程技术网

将BoxView或框架的高度绑定到Xamarin中的(隐藏)导航栏

将BoxView或框架的高度绑定到Xamarin中的(隐藏)导航栏,xamarin,navigationbar,custom-view,Xamarin,Navigationbar,Custom View,我不想在主页上使用标准导航栏,而是想隐藏该导航栏并加载一个自定义导航栏。我认为使用BoxView(编辑:)框架是最好的方法。但是,如何将BoxView的高度(请求)绑定到(隐藏的)导航栏(最好是Xaml) (boxview的框架应具有相同的方法)对于两个常用控件,您可以像这样将一个控件的高度绑定到另一个控件(以boxview和按钮为例): 嘿,我想我们误会了。我想让BoxView元素具有与navigationbar相同的高度,以创建自定义元素。我想编辑BoxView(或框架)的高度,而不是导航栏

我不想在主页上使用标准导航栏,而是想隐藏该导航栏并加载一个自定义导航栏。我认为使用BoxView(编辑:)框架是最好的方法。但是,如何将BoxView的高度(请求)绑定到(隐藏的)导航栏(最好是Xaml)


(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;
 }
}