在Xamarin.Forms UWP项目中激烈标题栏和标签之间的空白区域

时间:2016-11-26 09:06:56

标签: c# xamarin uwp xamarin.forms xamarin.uwp

我几乎是 Xamarin.Forms 的新手,我正在开发一个相当简单的跨平台应用程序。该应用在Android中显示足够好,但在UWP中有一个愚蠢的空白区域。该项目包含一个带有4个NavigationPages的TabbedPage,以便在其中推送和弹出页面。

在深入研究UWP平台细节之后,我能够改变标签的样式。我一直在寻找3天的解决方案,这让我发疯。到目前为止我找到的唯一解决方案(在VS 2015的Live Visual Tree的帮助下)是将可见性属性从CommandBar更改为“Collapsed”(如附图3所示。但这不是一个解决方案,因为它只在运行时消失了。

有人可以帮忙吗? 提前谢谢。

Android ViewUWP ViewLive Visual Tree

修改 我的 MainPage.xaml 代码如下:

<?xml version="1.0" encoding="utf-8" ?>
<TabbedPage xmlns="http://xamarin.com/schemas/2014/forms"
            xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
            xmlns:local="clr-namespace:_TIF_Xamarin;assembly=_TIF_Xamarin"
            x:Class="_TIF_Xamarin.MainPage">

  <!--4 different tabs, which also are Navigation Pages-->
  <NavigationPage Title="Home">
    <x:Arguments>
      <local:HomePage />
    </x:Arguments>
  </NavigationPage>

  <NavigationPage Title="Exhibitor">
    <x:Arguments>
      <local:ExhibitorsPage />
    </x:Arguments>
  </NavigationPage>

  <NavigationPage Title="Exhibits">
    <x:Arguments>
      <local:ExhibitsPage />
    </x:Arguments>
  </NavigationPage>

  <NavigationPage Title="More">
    <x:Arguments>
      <local:MorePage />
    </x:Arguments>
  </NavigationPage>

</TabbedPage> 

1 个答案:

答案 0 :(得分:1)

您需要为其创建自定义.map(|(a, b)| (b, a)) ,然后创建UWP渲染器。

首先在PCL中创建TabbedPage

CustomTabbedPage

在您的XAML中,请使用此public class CustomTabbedPage : TabbedPage { } 代替CustomTabbedPage。所有行为和UI在所有平台上都保持不变。

现在您在UWP项目中创建一个渲染器:

TabbedPage

我们使用[assembly: ExportRenderer(typeof(CustomTabbedPage), typeof(CustomTabbedPageRenderer))] namespace App.UWP { public class CustomTabbedPageRenderer : TabbedPageRenderer { protected override void OnElementChanged(VisualElementChangedEventArgs e) { base.OnElementChanged(e); Control.TitleVisibility = Windows.UI.Xaml.Visibility.Collapsed; } } } 隐藏FormsPivot.TitleVisibility区域。