я использую Xamarin.Forms и у меня возникла проблема при попытке использования Carousel alexrainman's .
В частности, я хочу настроить представление карусели, в котором каждое представление является ListView, а затем каждый ListView будет отображать список объектов.
Я прочитал страницы документа и определил источники для моих CarouselView и ListView следующим образом:
ObservableCollection<ObservableCollection<ItemFormat>> MyCarouselSource = new ObservableCollection<ObservableCollection<ItemFormat>>();
ObservableCollection<ItemFormat> MyListViewSource = new ObservableCollection<ItemFormat>();
но я не могу заставить его работать.
Мой ListView будет иметь список объектов, что-то вроде этого:
[
{
"field_name":"value1",
"field_value":"value11"
},
{
"field_name":"value2",
"field_value":"value22"
},
...
]
Вот мой код:
public class ItemFormat
{
[JsonProperty("field_name")]
public string FieldName { get; set; }
[JsonProperty("field_value")]
public string FieldValue { get; set; }
}
Просмотр модели (в ValidationBindableBase есть INotifyPropertyChanged):
public class MyViewModel : ValidationBindableBase
{
...
ObservableCollection<ObservableCollection<ItemFormat>> _myCarouselSource;
public ObservableCollection<ObservableCollection<ItemFormat>> MyCarouselSource
{
get => _myCarouselSource;
set => SetProperty(ref _myCarouselSource, value);
}
ObservableCollection<ItemFormat> _myListViewSource;
public ObservableCollection<ItemFormat> MyListViewSource
{
get => _myListViewSource;
set => SetProperty(ref _myListViewSource, value);
}
public DetailedSalaryViewModel()
{
}
}
код позади
public partial class MyViewPage : ContentPage
{
MyViewModel viewModel = new MyViewModel();
public MyViewPage ()
{
InitializeComponent ();
BindingContext = viewModel ;
}
}
Представление XAML:
<?xml version="1.0" encoding="utf-8" ?>
<ContentPage
x:Class="salary_sheet.Views.MyViewPage"
xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:controls="clr-namespace:CarouselView.FormsPlugin.Abstractions;assembly=CarouselView.FormsPlugin.Abstractions">
<controls:CarouselViewControl
x:Name="carousel"
ItemsSource="{Binding MyCarouselSource}"
Orientation="Horizontal"
ShowArrows="true"
ShowIndicators="true">
<controls:CarouselViewControl.ItemTemplate>
<DataTemplate>
<ListView ItemsSource="{Binding MyListViewSource}" RowHeight="100">
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>
<Grid Padding="5">
<Grid.ColumnDefinitions>
<ColumnDefinition Width=".5*" />
<ColumnDefinition Width=".5*" />
</Grid.ColumnDefinitions>
<Label
Grid.Column="0"
HorizontalOptions="Start"
Text="{Binding FieldName}" />
<Label
Grid.Column="1"
HorizontalOptions="Start"
Text="{Binding FieldValue}" />
</Grid>
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</DataTemplate>
</controls:CarouselViewControl.ItemTemplate>
</controls:CarouselViewControl>
</ContentPage>
Пожалуйста, помогите мне исправить определение источников для моего ListView и CarouselView.
Также, как установить и упорядочить код XAML представления.
Я действительно ценю любую помощь. Спасибо.