Проблема представления карусели Xamarin Forms с привязкой

Здравствуйте, у меня возникла проблема с привязкой списка строк к моему карусельному представлению. Сначала у меня есть список объектов, которые я получаю с моего сервера.

public class PostObject
    {
        public string PostOwner { get; set; }
        public string Id { get; set; }
        public string Post { get; set; }
        public string ProfileImage { get; set; }
        public List<string> PostImages { get; set; }
    }
  List<PostObject> posts = new List<PostObject>();

Это работает, как я и ожидал.

Затем у меня есть созданное мной представление карты, и в представлении карты я хочу иметь представление карусели.

Итак, я настроил свой Xaml следующим образом (для ясности опуская части, которые работают)

<?xml version = "1.0" encoding = "utf-8" ?>
<ContentPage xmlns = "http://xamarin.com/schemas/2014/forms"
             xmlns:x = "http://schemas.microsoft.com/winfx/2009/xaml"
             xmlns:controls = "clr-namespace:ImageCircle.Forms.Plugin.Abstractions;assembly=ImageCircle.Forms.Plugin"
              NavigationPage.HasNavigationBar = "True"
             NavigationPage.HasBackButton = "False"
             NavigationPage.BackButtonTitle = "Back"
             Title = "amici"
             x:Class = "amici.Posts">

    <NavigationPage.TitleView>
        <StackLayout Orientation = "Horizontal" VerticalOptions = "Center" Spacing = "10" >
            <Label x:Name = "GroupTitle" TextColor = "White" FontSize = "Medium"/>
        </StackLayout>
    </NavigationPage.TitleView>

    <ContentPage.ToolbarItems>
        <ToolbarItem Name = "iconexample" Icon = "settings.png" Priority = "0" Order = "Primary" />
    </ContentPage.ToolbarItems>

    <ContentPage.Content>
        <StackLayout>
            <ListView x:Name = "ItemsListView" 
             VerticalOptions = "FillAndExpand"
             HasUnevenRows = "true"
             IsPullToRefreshEnabled = "true"
             IsRefreshing = "{Binding IsBusy, Mode=OneWay}"
             CachingStrategy = "RecycleElement">
                <!--ItemSelected = "OnItemSelected"-->
                <ListView.ItemTemplate>
                    <DataTemplate>
                        <ViewCell >
                            <StackLayout Padding = "10">
                                <Frame x:Name = "myframe" HasShadow = "True" >

                                    <Grid HorizontalOptions = "FillAndExpand"  RowSpacing = "0" ColumnSpacing = "0"  >
                                        <Grid.RowDefinitions>
                                            <RowDefinition Height = "20" />
                                            <RowDefinition Height = "Auto" />
                                            <RowDefinition Height = "Auto" />
                                            <RowDefinition Height = "Auto" />
                                            <RowDefinition Height = "20" />
                                            <RowDefinition Height = "20" />
                                            <RowDefinition Height = "Auto" />
                                        </Grid.RowDefinitions>
                                        <Grid.ColumnDefinitions>
                                            <ColumnDefinition Width = "Auto" />
                                        </Grid.ColumnDefinitions>
                                        <Label Grid.Row = "0"  Text = "{Binding PostOwner}" LineBreakMode = "WordWrap" Font = "Bold,16"  />
                                        <controls:CircleImage Grid.Row = "0" Margin = "10" BorderColor = "white" BorderThickness = "1" VerticalOptions = "Start" HorizontalOptions = "Start" Source = "{Binding ProfileImage}" Aspect = "AspectFit">
                                            <controls:CircleImage.WidthRequest>
                                                <OnPlatform x:TypeArguments = "x:Double">
                                                    <On Platform = "Android, iOS">65</On>
                                                </OnPlatform>
                                            </controls:CircleImage.WidthRequest>
                                            <controls:CircleImage.HeightRequest>
                                                <OnPlatform x:TypeArguments = "x:Double">
                                                    <On Platform = "Android, iOS">65</On>
                                                </OnPlatform>
                                            </controls:CircleImage.HeightRequest>
                                        </controls:CircleImage>

                                        <Label Grid.Row = "1"  Text = "{Binding Post}" LineBreakMode = "WordWrap" Font = "Bold,16"  />

                                        <CarouselView x:Name = "PostImages" Grid.Row = "2" ItemsSource = "{Binding PostImages}">
                                            <CarouselView.ItemTemplate>
                                                <DataTemplate>
                                                    <Image Source = "{Binding .}" Aspect = "AspectFill" HorizontalOptions = "FillAndExpand" VerticalOptions = "FillAndExpand" />
                                                </DataTemplate>
                                            </CarouselView.ItemTemplate>
                                        </CarouselView>

                                        <!--<Image Grid.Row = "2"  Source = "{Binding ImageURL}" Aspect = "AspectFill" HorizontalOptions = "FillAndExpand" VerticalOptions = "FillAndExpand" />-->
                                        <BoxView Grid.Row = "3"  BackgroundColor = "black" HeightRequest = "1"  HorizontalOptions = "FillAndExpand"/>
                                        <StackLayout Grid.Row = "4" Orientation = "Horizontal" >
                                            <Label  Text = "Likes: " LineBreakMode = "NoWrap" Font = "Bold,14" />
                                            <Label  Text = "0" LineBreakMode = "NoWrap" FontSize = "14" />
                                        </StackLayout>
                                        <StackLayout Grid.Row = "5" Orientation = "Horizontal" >
                                            <Label Text = "Comments: " LineBreakMode = "NoWrap"  Font = "Bold,14"  HorizontalOptions = "End" />
                                            <Label Text = "0" HorizontalOptions = "End"  LineBreakMode = "NoWrap" FontSize = "14" />
                                        </StackLayout>
                                        <!--<Label Grid.Row = "2" Text = "{Binding OwnerFullName}" LineBreakMode = "NoWrap" FontSize = "16" />-->
                                    </Grid>
                                </Frame>
                            </StackLayout>
                        </ViewCell>
                    </DataTemplate>
                </ListView.ItemTemplate>
            </ListView>
         </StackLayout>


    </ContentPage.Content>
</ContentPage>

В моем коде у меня есть это

public Posts (GroupInfo ginfo)
        {
            InitializeComponent ();
            GroupTitle.Text = ginfo.Title;
            CurrentGroupInfo = ginfo;
            GetDataPosts();


            ItemsListView.RefreshCommand = new Command(() => {
                GetDataPosts();
                ItemsListView.IsRefreshing = false;

            });
        }

public void GetDataPosts()
        {
            try
            {
                string apikey = Application.Current.Properties["api"].ToString();
                ItemsListView.ItemsSource = null;
                posts.Clear();

                if (RestController.GetMyPostData(ref posts, CurrentGroupInfo.Id.ToString(), apikey))
                {
                    ItemsListView.ItemsSource = posts;
                }
            }
            catch(Exception e)
            {
                Debug.WriteLine(e.Message);
            }

        }

теперь до этого момента все работает и никаких ошибок, но когда приложение переходит к отображению страницы, я получаю сообщение об ошибке

System.TypeInitializationException: инициализатор типа для Xamarin.Forms.ItemsView вызвал исключение.

который я прослеживаю до представления карусели. Когда я комментирую карусель, он работает. поэтому я думаю, что не могу связать ИЛИ использовать карусель так, как я думал?

Возможный дубликат System.TypeInitializationException Xamarin CarouselView

sermet 21.05.2019 16:56

Я не вижу ссылки на сборку, которая включала бы CarouselView. Может быть, это причина вашего исключения

Mouse On Mars 21.05.2019 16:56

@ Мышь на Марсе Я использую Xamarin.Forms 3.6.0.344457, и когда я перехожу к панели инструментов (Visual Studio 2017), я вижу там карусельное представление и что я добавил в свой XAML? мне все еще нужно загрузить и элемент управления и добавить его в мою ссылку на сборку?

Mike 21.05.2019 17:45
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
3
949
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Раньше CarouselView был плагином, который теперь стал частью Xamarin.Forms, вступившим в силу с версии 4. Вы можете использовать более раннюю версию XF, но вам нужно будет получить этот плагин, добавить ссылки на сборки в свой XAML и поместить код инициализации в свою платформу. конкретные проекты.

Кроме того, вы можете перейти на Xamarin.Forms 4.

Ответ принят как подходящий

Несмотря на то, что вы можете увидеть карусельное представление в Xamarin.Forms 3.6.0.344457, оно определяет только интерфейс. В классе Carousel View нет реализаций и свойств.

Вы можете использовать его только в Xamarin.Forms 4.0. Поскольку это все еще предварительная версия, есть некоторые ограничения. Смотрите мой пост здесь: https://stackoverflow.com/a/56235795/8354952 для получения дополнительной информации.

@Mike Получили ли вы ожидаемый результат в предварительном просмотре Xamarin.Forms 4.0?

Anonymous 24.05.2019 11:56

извините за долгую задержку, но нет, я решил использовать плагин для моего CarouselView

Mike 04.06.2019 15:20

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

Похожие вопросы

В формах Xamarin, как вы можете сделать выбранный параметр в средстве выбора невидимым в других средствах выбора?
Как я могу добавить несколько изображений в раскрывающийся список в поле со списком?
Требуется исправление: невозможно открыть модальное окно с помощью кнопки внутри пользовательского элемента управления внутри Listview-DataTemplate-ViewCell
Пользовательский элемент управления и дополнительный стиль в generic.xaml для него
Почему мои пользовательские элементы управления не всегда получают события MouseEnter?
Как я могу центрировать всплывающее окно в моем окне в XAML?
Макет Xaml, поле в левом углу над другим полем
Как перемещаться по элементам между несколькими GridViews в ListView с помощью контроллера Xbox?
Я хочу изменить цвет линии с помощью «триггера кнопки» в определенном состоянии
Как перебирать коллекцию в XAML, где коллекция является частью модели в классе С#