Xamarin Listview: кадр, который охватывает несколько элементов? - PullRequest
0 голосов
/ 02 октября 2018

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...