首页 > 解决方案 > Xamarin 绑定到 XAML 中的属性(自定义类型对象列表)

问题描述

我有一个自定义类型和一个具有属性HomeItem的内容页面(这是of )。在 ListView 中使用 Itemsource。HomePageHomeItemsSourceObservableCollectionHomeItemHomeItemsSource

Listview 包含一个自定义视图CardsHolderHomePage我想绑定到该类的一个Items属性HomeItem。我已经把所有东西都连接好了,但我一直收到错误消息。

System.ArrayTypeMismatchException: Attempted to access an element as a type incompatible with the array.

无论我做什么或如何调整代码。这是实际的代码。

主页.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;
    }
    }
}

主页.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; }
...
}

请问我该怎么办?

标签: c#xamlxamarin.formsbinding

解决方案


推荐阅读