2016-11-26 5 views
3

Я практически новичок в Xamarin.Forms, и я разрабатываю довольно простое межплатформенное приложение. Приложение отображается достаточно хорошо в Android, но в UWP есть глупо пустое место. Проект состоит из TabbedPage с четырьмя навигационными страницами внутри него, чтобы вставлять и всплывать страницы внутри них.Раздражает пустое пространство между заголовком и вкладками в Xamarin.Forms Проект UWP

После небольшого углубления в спецификацию платформы UWP я смог изменить стиль своих вкладок. Я искал 3 дня для решения, и это сводит меня с ума. Единственное решение, которое я нашел до сих пор (с помощью Live Visual Tree от VS 2015), заключается в том, чтобы изменить свойство Видимость на «Свернуто» из CommandBar (как показано на 3-й прилагаемой фотографии). Но это не решение, потому что оно исчезает, только во время работы.

Может ли кто-нибудь помочь? Спасибо заранее.

Android View, UWP View, Live Visual Tree

EDIT: Мой 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> 
+0

Не могли бы вы разместили раскладку Xamarin.Forms XAML, которую используете для этой страницы? –

ответ

1

Вам нужно создать пользовательский TabbedPage, а затем в UWP визуализатор для него ,

Сначала необходимо создать CustomTabbedPage в PCL:

public class CustomTabbedPage : TabbedPage { } 

В вашем XAML, используйте этот CustomTabbedPage вместо TabbedPage. Все поведение и пользовательский интерфейс останутся неизменными на всех платформах.

Теперь вы создаете визуализатор в проекте UWP:

[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, чтобы скрыть Title область.

+0

Большое вам спасибо за ваш ответ и ваше время. Я надеялся избежать персонализированного рендеринга, но теперь я вижу, что это действительно необходимо. Я дам вам знать о вашем предложении. – kkaragki

+0

Я сделал все точно так, как вы сказали мне, но в _this_ линии: 'Control.TitleVisibility = Windows.UI.Xaml.Visibility.Collapsed;' VS2015 показывает мне сообщение об ошибке: _error CS1061 \t «FormsPivot» делает не содержит определения для «TitleVisibility», и не может быть найден метод расширения «TitleVisibility», принимающий первый аргумент типа «FormsPivot» (вам не хватает директивы использования или ссылки на сборку?) _ Извините, что беспокоит вас снова – kkaragki

+0

Is возможно, у вас нет последней версии Xamarin.Forms, установленной из NuGet? Я проверил Xamarin.Forms GitHub и свойство должно быть там действительно, так что это довольно запутанно :-) - https://github.com/xamarin/Xamarin.Forms/blob/master/Xamarin.Forms.Platform.WinRT .Phone/FormsPivot.cs –

 Смежные вопросы

  • Нет связанных вопросов^_^