У меня есть пользовательский тип HomeItem
и страница контента HomePage
со свойством HomeItemsSource
(это ObservableCollection
из HomeItem
).HomeItemsSource
используется в качестве источника элементов в ListView.
Listview содержит настраиваемое представление CardsHolder
в HomePage
, я хочу связать со свойством Items
класса HomeItem
.Я все связал, но все равно получаю сообщение об ошибке.
System.ArrayTypeMismatchException: Attempted to access an element as a type incompatible with the array.
Независимо от того, что я делаю или как я настраиваю код.Вот фактический код.
HomePage.xaml.cs
public partial class HomePage : ContentPage
{
public HomePage()
{
InitializeComponent();
HomeItemsSource = homeItemsVM.GetItems();
BindingContext = this;
Title = "Home";
}
private HomeItemsVM homeItemsVM = new HomeItemsVM();
public ObservableCollection<HomeItem> HomeItemsSource { get; set; }
public class HomeItemTemplateSelector : DataTemplateSelector
{
public DataTemplate SingleTemplate { get; set; }
public DataTemplate MultipleTemplate { get; set; }
protected override DataTemplate OnSelectTemplate(object item, BindableObject container)
{
return ((HomeItem)item).Type == HomeItem.ItemType.Singular ? SingleTemplate : MultipleTemplate;
}
}
}
HomePage.xaml
<ResourceDictionary>
<DataTemplate x:Key="singleTemplate">
<ViewCell>
<views:CardHolder Margin="0,0,0,18"
BackgroundColor="Aqua"
HorizontalOptions="Center"
Items="{Binding Items}">
...
</views:CardHolder>
<ListView Grid.Row="1"
HorizontalOptions="Fill"
ItemsSource="{Binding HomeItemsSource}"
ItemTemplate="{StaticResource itemTemplateSelector}"
BackgroundColor="Transparent"
SeparatorVisibility="None"
HasUnevenRows="True" />
HomeItem.cs
public class HomeItem : ObservableCollection<FeaturedItem>
{
//public ObservableCollection<FeaturedItem> Items { get; set; } = new ObservableCollection<FeaturedItem>();
public ItemType Type { get; set; }
public string Title { get; set; }
public string Contributor { get; set; }
...
}
Пожалуйста, что мне делать?