Xamarin绑定到XAML中的属性(自定义类型对象的列表)

时间:2018-10-01 16:52:26

标签: c# xaml xamarin.forms binding

我有一个自定义类型HomeItem和一个内容页面HomePage,该页面具有属性HomeItemsSource(这是ObservableCollection的{​​{1}})。 HomeItem用于ListView中的Itemsource。

Listview在HomeItemsSource中包含一个自定义视图CardsHolder,我想绑定到HomePage类的属性Items。我已经把所有东西都整理好了,但是我总是出错。

HomeItem

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

HomePage.xaml.cs

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

HomePage.xaml

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;
    }
    }
}

HomeItem.cs

<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" />

请问我该怎么办?

0 个答案:

没有答案