Xamarin Listview: кадр, который охватывает несколько элементов?
У меня есть Xamarin Forms ListView с DataTemplateSelector, так что я могу отображать различные типы ячеек (см. Ссылку на изображение ниже). Причина использования DataTemplateSelector в основном заключалась в нескольких подкомментах, а также в поле "Ввод" для дополнительных подкомментариев, которые должны отображаться под основным комментарием.
Моя проблема: я хотел бы поместить рамку вокруг основного комментария, его подкомментариев и поля ввода, чтобы указать, что эти элементы принадлежат друг другу. Каков был бы лучший способ сделать это? (см. правую сторону связанного изображения ниже).
Спасибо за помощь в продвижении!
Изменить: некоторый код. Это мой список:
<ListView HorizontalOptions="FillAndExpand" VerticalOptions="FillAndExpand"
x:Name="commentListView" HasUnevenRows="True" SeparatorVisibility="None"
ItemsSource="{Binding AllComments}"
ItemTemplate="{StaticResource MessageTemplateSelector}" >
</ListView>
Это мой DataTemplateSelector:
public class CommentDataTemplateSelector : Xamarin.Forms.DataTemplateSelector
{
public CommentDataTemplateSelector()
{
this.parentDataTemplate = new DataTemplate(typeof(ParentCommentViewCell));
this.childDataTemplate = new DataTemplate(typeof(ChildCommentViewCell));
this.entryDataTemplate = new DataTemplate(typeof(EntryCommentViewCell));
this.dateDataTemplate = new DataTemplate(typeof(DateCommentViewCell));
this.separatorDataTemplate = new DataTemplate(typeof(SeparatorCommentViewCell));
}
private readonly DataTemplate dateDataTemplate;
private readonly DataTemplate parentDataTemplate;
private readonly DataTemplate childDataTemplate;
private readonly DataTemplate entryDataTemplate;
private readonly DataTemplate separatorDataTemplate;
protected override DataTemplate OnSelectTemplate(object item, BindableObject container)
{
var messageVM = item as CommentBaseViewModel;
if (messageVM == null)
{
return null;
}
switch (messageVM.CommentType)
{
case CommentBaseTypeEnum.Child:
return this.childDataTemplate;
case CommentBaseTypeEnum.Parent:
return this.parentDataTemplate;
case CommentBaseTypeEnum.Entry:
return this.entryDataTemplate;
case CommentBaseTypeEnum.Date:
return this.dateDataTemplate;
case CommentBaseTypeEnum.Separator:
return this.separatorDataTemplate;
default:
Debug.WriteLine("### Is there a Comment ViewCell missing?");
return null;
}
}
}
Как видите, есть 5 разных ячеек. Теперь при заполнении ItemSource объекта ListView выше я складываю разные типы друг в друга, например 1. Дата 2. Родитель 3. Несколько дочерних элементов 4. Запись 5. Разделитель
и тогда я начинаю все сначала.
То, что я хочу, это иметь один кадр, который охватывает элементы с 1 по 4, и я не знаю, могу ли я и как это сделать, поскольку у меня множество различных ViewCells.