Xamarin Привязка к свойству (список объектов пользовательского типа) в XAML - PullRequest
0 голосов
/ 01 октября 2018

У меня есть пользовательский тип 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; }
...
}

Пожалуйста, что мне делать?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...