Извините за задержку ответа. Я нашел этот образец , это может быть полезно
Отказ от ответственности : Я не очень хорошо наблюдаю границы ViewModel / Model. Я просто пытаюсь выяснить, что не работает. Вам необходимо обновить ViewModels / Models в соответствии с вашими требованиями и проектными документами.
Я не думаю, что заголовок группы - это то, что вы ищете. вот ссылка на документацию Xamarin , где говорится о верхнем / нижнем колонтитуле и имеется изображение
Начнем с просмотра списка 1-го. Удалите GroupHeaderTemplate и добавьте атрибут GroupDisplayBinding в представление списка.
<ListView ItemsSource="{Binding FacilityList}"
IsGroupingEnabled="true"
HasUnevenRows="True"
GroupDisplayBinding="{Binding Heading}" <---------
ItemTapped="OnItemTapped">
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>
<StackLayout>
<Image Source="{Binding ImageName}" HeightRequest="50" WidthRequest="50"/>
<Label Text="{Binding Name}" TextColor="Black" FontSize="Medium"/>
</StackLayout>
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
Как только вы сделаете это изменение, если вы запустите приложение. Вы должны увидеть два пункта в списке. Подписка / Отписался. Прогресс!
Далее нам нужно изменить модель FacilitiesGroup. Нам нужно расширить ObservableCollection.
public class FacilitiesGroup : ObservableCollection<Facility>
{
public string Heading { get; set; }
}
Далее нам нужно внести изменения в FacilityViewModel
public FacilityViewModel()
{
FacilityDataStore facilityDataStore = new FacilityDataStore();
var items = facilityDataStore.GetList();
var groupList = new List<FacilitiesGroup>();
var group = new FacilitiesGroup()
{
Heading = "Subscribed"
};
foreach( Facility facility in items.Where(x => x.IsSubscribed == true ) )
{
group.Add(facility);
}
var group2 = new FacilitiesGroup()
{
Heading = "Unsubscribed"
};
foreach( Facility facility in items.Where(x => x.IsSubscribed == false ) )
{
group2.Add(facility);
}
groupList.Add(group);
groupList.Add(group2);
FacilityList = new ObservableCollection<FacilitiesGroup>(groupList);
}
Надеюсь, это поможет! Удачи.