Можно ли обернуть мой CarouselView в ListView?Я пытался сделать это с помощью функции группировки, но список всегда пуст ...
В xaml это должно выглядеть примерно так.Немного подробнее: у меня 3-5 фотографий на квест, в которых есть еще один реквизит, такой как Title, SubTitle и т. Д. Итак, если я не могу создать такую структуру, как это можно сделать иначе?
<ListView x:Name="questsHistoryDetailList"
HasUnevenRows="True"
IsGroupingEnabled="True"
SeparatorVisibility="None"
ItemsSource="{Binding Data}" >
<ListView.GroupHeaderTemplate>
<DataTemplate>
<ViewCell>
<StackLayout>
<cv:CarouselViewControl
x:Name="carouselView"
ItemsSource="{Binding DetailPhotoCollection}"
ShowIndicators="true"
HorizontalOptions="FillAndExpand"
VerticalOptions="FillAndExpand">
<cv:CarouselViewControl.ItemTemplate>
<DataTemplate>
<StackLayout Orientation="Vertical" HorizontalOptions="FillAndExpand" VerticalOptions="FillAndExpand">
<Image Source="{Binding Photo, Converter = {StaticResource ImageSourceConverter}}"/>
</StackLayout>
</DataTemplate>
</cv:CarouselViewControl.ItemTemplate>
</cv:CarouselViewControl>
</StackLayout>
</ViewCell>
</DataTemplate>
</ListView.GroupHeaderTemplate>
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>
<StackLayout>
<Label Text="{Binding Key.Title}"/>
</StackLayout>
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
In C #
public DetailHistoryViewModel(List<Indication> indications)
{
Data = new ObservableCollection<Grouping<Indication, DetailPhoto>>();
indications.ForEach(indication => {
new photoWrapper = new ObservableCollection<DetailPhoto>(
indication.Photo.Split(',').ToList().ConvertAll(p => new DetailPhoto(p)));
Data.Add(new Grouping<Indication, DetailPhoto>(
indication,
photoWrapper
));
});
}
public class DetailPhotoWrapper
{
public List<DetailPhoto> DetailPhotoCollection { get; set; }
}
public class DetailPhoto
{
public string Photo { get; set; }
public DetailPhoto(string photo)
{
Photo = photo;
}
}
public class Grouping<K, T> : ObservableCollection<T>
{
public K Key { get; private set; }
public Grouping(K key, IEnumerable<T> items)
{
Key = key;
foreach (var item in items)
this.Items.Add(item);
}
}