Как указать источник элементов в carseview?

#xamarin.forms

#xamarin.forms

Вопрос:

Я создал carseView для отображения графического баннера, подобного блогу.

 <CarouselView ItemsSource="{Binding Banner}">
            <CarouselView.ItemTemplate>
                <DataTemplate>
                    <Image Source="{Binding ImageUrl}"/>
                </DataTemplate>
            </CarouselView.ItemTemplate>
  

и укажите ItemSource как :

 public ObservableCollection<ImageData> Banner ;
Banner = new ObservableCollection<ImageData>
            {
                new ImageData()
                {
                    ImageUrl = "b1.png",
                    ImageWidth = (int)App.UIWidth,
                    ImageHeight=(int)App.UIHeight
                },
                new ImageData()
                {
                    ImageUrl="b2.png",
                    ImageWidth=(int)App.UIWidth,
                    ImageHeight=(int)App.UIHeight

                }      
            };
  

Я думаю, что это правильно, но это всегда приводит к ошибке: указанное приведение недопустимо.

Я перепробовал много решений.Контекст привязки, без сомнения, правильный. пожалуйста, скажите мне, где ошибка.

моя версия xamarin: 3.6.0.264807

Комментарии:

1. во-первых, Banner должен быть общедоступным свойством с получателем. Во-вторых, какая конкретная строка генерирует исключение?

2. @Jason Спасибо, Джейсон, я добавил getter, но он также разбился. В строке main.cs17

3. Main.cs:17 UIApplication.cs:63 UIApplication.cs:79 .viewDidLoad () [0x00035] в <0648e2dffe9e4201b8c6e274ced6579f>:0

4. если вы удалите код доступа к данным, загрузится ли эта страница? Я подозреваю, что на этой странице есть какая-то другая проблема, вызывающая исключение.

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

Ответ №1:

Я создаю простую демонстрацию об использовании CarouselView, и у меня нет никаких проблем с моей стороны.

 <?xml version="1.0" encoding="utf-8" ?>
<ContentPage
x:Class="test2.Page15"
xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:forms="clr-namespace:Xamarin.Forms;assembly=Xamarin.Forms.CarouselView">
<ContentPage.Content>
    <StackLayout>
        <forms:CarouselView ItemsSource="{Binding banners}">
            <forms:CarouselView.ItemTemplate>
                <DataTemplate>
                    <Image Source="{Binding imageurl}" />
                </DataTemplate>
            </forms:CarouselView.ItemTemplate>
        </forms:CarouselView>
    </StackLayout>
</ContentPage.Content>
  

 [XamlCompilation(XamlCompilationOptions.Compile)]
public partial class Page15 : ContentPage
{
    public ObservableCollection<model11> banners { get; set; }
    public Page15 ()
    {
        InitializeComponent ();
        banners = new ObservableCollection<model11>()
        {
            new model11(){imageurl="a11.jpg"},
            new model11(){imageurl="c1.jpg"},
            new model11(){imageurl="c2.jpg"},
            new model11(){imageurl="c3.jpg"}

        };
        this.BindingContext = this;
    }
}
public class model11
{
    public string imageurl { get; set; }
}
  

Комментарии:

1. вы используете CarouselView. FormsPlugin. Я сделал это. Я имею в виду собственный элемент управления CarouselView от xamarin.forms, а не этот плагин. Но спасибо вам за ваш ответ

2. @daotian, я модифицирую свой код и использую Xamarin.forms. Управление CarouseView, но у меня также нет никаких проблем с моей стороны, пожалуйста, смотрите приведенный выше код, который я изменил.

3. Спасибо, я понятия не имею, что не так с моей программой. но спасибо.