Как сделать сгруппированные заголовки ListView плавающими (не липкими) правильно в iOS? - PullRequest
0 голосов
/ 09 мая 2019

У меня есть сгруппированный ListView (Xamarin Forms).Мне нужно сделать заголовки групп плавающие (не липкие).На Android все работает так, как я хочу, но на iOS есть проблема.

Я пытался использовать это: https://forums.xamarin.com/discussion/34696/listview-grouped-style-on-ios

В этом случае заголовки плавают, но это выглядит таксоздает новый контроль и предыдущий не исчезает.Я имею в виду, что вижу один список, который перекрывает другой.

Я могу установить фон верхнего списка на какой-нибудь цвет.Тогда список, который находится позади, не будет виден, но это не решение этой проблемы.Может кто-нибудь объяснить мне, как это исправить?

Ответы [ 2 ]

0 голосов
/ 30 мая 2019

Простым решением этой проблемы является использование специфической для платформы iOS функции Xamarin.Forms, которая позволяет легко установить стиль заголовка группы ListView в XAML (или код позади) в одну строку следующим образом:

<ContentPage ...
             xmlns:ios="clr-namespace:Xamarin.Forms.PlatformConfiguration.iOSSpecific;assembly=Xamarin.Forms.Core">
    <StackLayout Margin="20">
        <ListView ios:ListView.GroupHeaderStyle="Grouped">
            ...
        </ListView>
    </StackLayout>
</ContentPage>

Перечисление «Сгруппировано» указывает, что ячейки заголовка не перемещаются при прокрутке ListView.Подробнее см. https://docs.microsoft.com/en-us/xamarin/xamarin-forms/platform/ios/listview-group-header-style.

0 голосов
/ 10 мая 2019

Вы ссылались на документ от здесь ?

Если вы хотите, чтобы заголовки групп были плавающими, вам просто нужно установить IsGroupingEnabled как true.

в xaml

<ListView x:Name ="listView" IsGroupingEnabled="true" GroupDisplayBinding="{Binding LongName}" >
   <ListView.ItemTemplate>
    <DataTemplate>
      <TextCell Text="{Binding Name}" Detail = "{Binding Comment}" />
    </DataTemplate>
   </ListView.ItemTemplate>
</ListView>

в коде позади

public partial class GroupedListXaml : ContentPage
{
    private ObservableCollection<GroupedVeggieModel> grouped { get; set; }
    public GroupedListXaml ()
    {
     InitializeComponent ();

     grouped = new ObservableCollection<GroupedVeggieModel> ();
     var veggieGroup = new GroupedVeggieModel () { LongName = "vegetables" };
     var fruitGroup = new GroupedVeggieModel () { LongName = "fruit" };

     veggieGroup.Add (new VeggieModel () { Name = "celery", Comment = "try ants on a log" });
     veggieGroup.Add (new VeggieModel () { Name = "tomato",  Comment = "pairs well with basil" });
     veggieGroup.Add (new VeggieModel () { Name = "zucchini", Comment = "zucchini bread > bannana bread" });
     veggieGroup.Add (new VeggieModel () { Name = "peas",  Comment = "like peas in a pod" });
     veggieGroup.Add (new VeggieModel () { Name = "celery", Comment = "try ants on a log" });
     veggieGroup.Add (new VeggieModel () { Name = "tomato",  Comment = "pairs well with basil" });
     veggieGroup.Add (new VeggieModel () { Name = "zucchini", Comment = "zucchini bread > bannana bread" });
     veggieGroup.Add (new VeggieModel () { Name = "peas",  Comment = "like peas in a pod" });
     veggieGroup.Add (new VeggieModel () { Name = "celery", Comment = "try ants on a log" });
     veggieGroup.Add (new VeggieModel () { Name = "tomato",  Comment = "pairs well with basil" });
     veggieGroup.Add (new VeggieModel () { Name = "zucchini", Comment = "zucchini bread > bannana bread" });
     veggieGroup.Add (new VeggieModel () { Name = "peas",  Comment = "like peas in a pod" });

     fruitGroup.Add (new VeggieModel () {Name = "banana", Comment = "available in chip form factor"});
     fruitGroup.Add (new VeggieModel () {Name = "strawberry", Comment = "spring plant"});
     fruitGroup.Add (new VeggieModel () {Name = "cherry",Comment = "topper for icecream"});
     fruitGroup.Add (new VeggieModel () {Name = "banana", Comment = "available in chip form factor"});
     fruitGroup.Add (new VeggieModel () {Name = "strawberry", Comment = "spring plant"});
     fruitGroup.Add (new VeggieModel () {Name = "cherry",Comment = "topper for icecream"});
     fruitGroup.Add (new VeggieModel () {Name = "banana", Comment = "available in chip form factor"});
     fruitGroup.Add (new VeggieModel () {Name = "strawberry", Comment = "spring plant"});
     fruitGroup.Add (new VeggieModel () {Name = "cherry",Comment = "topper for icecream"});


     grouped.Add (veggieGroup);
     grouped.Add (fruitGroup);
     listView.ItemsSource = grouped;
  }
}


в ViewModel

 public class VeggieModel
 {
  public string Name { get; set; }
  public string Comment { get; set; }       
  public VeggieModel ()
  {
  }
 }

  public class GroupedVeggieModel : ObservableCollection<VeggieModel>
  {
    public string LongName { get; set; }
  }

enter image description here

Если я неправильно понял вашу проблему. Вы можете предоставить снимок экрана или gif-файл, содержащий вашу проблему. Это поможет решить вашу проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...