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.

0 ответов

Другие вопросы по тегам