#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. Спасибо, я понятия не имею, что не так с моей программой. но спасибо.