У меня есть ListView Xamarin Forms с 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.