2017-01-25 4 views
1

Есть ли способ скрыть заголовки групп списка в форматах Xamarin? Я попытался установить высоту заголовка в шаблоне, но не работает:Xamarin forms: hide listview GroupHeader

<ListView ItemsSource="{Binding GroupedMenuItems}" SelectedItem="{Binding SelectedMenuItem}" SeparatorVisibility="None" IsGroupingEnabled="true"> 
      <ListView.GroupHeaderTemplate> 
      <DataTemplate> 
       <ViewCell Height="1"> 
       </ViewCell> 
      </DataTemplate> 
      </ListView.GroupHeaderTemplate> 
      <ListView.ItemTemplate> 
      <DataTemplate> 
       <ImageCell Text="{Binding Title}" ImageSource="{Binding IconSource}" TextColor="#000000"/> 
      </DataTemplate> 
      </ListView.ItemTemplate> 
     </ListView> 

Я только хочу, чтобы показать разделители между группами.

ответ

2

Да! Вам нужно установить значение HasUnevenRows в список ListView. Затем установите шаблон заголовка в ViewCell с высотой 0 с пустой сеткой или другим элементом.

<ListView ItemsSource="{Binding GroupedMenuItems}" SelectedItem="{Binding SelectedMenuItem}" SeparatorVisibility="None" IsGroupingEnabled="true" HasUnevenRows="True"> 
     <ListView.GroupHeaderTemplate> 
     <DataTemplate> 
      <ViewCell Height="0"> 
       <Grid/> 
      </ViewCell> 
     </DataTemplate> 
     </ListView.GroupHeaderTemplate> 
     <ListView.ItemTemplate> 
     <DataTemplate> 
      <ImageCell Text="{Binding Title}" ImageSource="{Binding IconSource}" TextColor="#000000"/> 
     </DataTemplate> 
     </ListView.ItemTemplate> 
    </ListView> 
+0

Спасибо! Обратите внимание, что он не работает в UWP. (Я не тестировал IOS, но это нормально с Android). – Ben

0

ответ SuavePirate может работать на Android, но требуется незначительные изменения для меня, чтобы заставить его работать почти на IOS. Мне пришлось изменить высоту ViewCell на 1 из 0. Я знаю, это странно, но по какой-то причине она отказывается работать иначе.

С этим небольшим изменением существовала еще одна разделительная группа с 1 пикселем, разделяющая друг друга, что не является идеальным, но достаточно хорошим для большинства целей. Я попытался скрыть эту строку, разместив StackLayout внутри ViewCell и установив BackgroundColor на «Белый». Я также попытался поставить BoxView внутри Grid и установить его цвет на «Белый», но ни один из этих подходов не смог скрыть эту высоту в 1 пиксель.

Ой хорошо, это все еще намного лучше, чем ничего.

+0

Хороший отзыв спасибо за обмен! – Ben