Xamarin Forms 乘以 CollectionViews Horizo​​ntal 和 Vertical

Xamarin Forms multiply CollectionViews Horizontal and Vertical

我尝试像这样在另一个 CollectionView 中使用一个 CollectionView。我的问题是那里不会像没有来源一样向我展示第二份简历。 我想 BindingContex 可能是问题所在,但我不知道如何解决它。

      <CollectionView 
       SelectionMode="Single"
       ItemsSource="{Binding MainInfo}">

        <CollectionView.ItemsLayout>
            <LinearItemsLayout ItemSpacing="10" Orientation="Vertical" />
        </CollectionView.ItemsLayout>

        <CollectionView.ItemTemplate>
            <DataTemplate>

                <StackLayout>

                    <Label Text="{Binding UserName}"/>

                    <!--Horizontal CV-->
                    <CollectionView 
                        SelectionMode="Single"
                        ItemsSource="{Binding MainInfo}"
                        >
                        <CollectionView.ItemsLayout>
                            <LinearItemsLayout ItemSpacing="10" Orientation="Horizontal" />
                        </CollectionView.ItemsLayout>

                        <CollectionView.ItemTemplate>
                            <DataTemplate>

                                <StackLayout>

                                    <Label Text="{Binding ImageUrl}"/>
                                    <Label Text="{Binding FullName}"/>

                                </StackLayout>

                            </DataTemplate>
                        </CollectionView.ItemTemplate>

                    </CollectionView>

                </StackLayout>

            </DataTemplate>
        </CollectionView.ItemTemplate>

    </CollectionView>

I guess the BindingContext can be the problem but i don't have a idea how i fix it.

在您的情况下,ItemsSource 和模型应该如下所示

    public class MyDetails
    {
        public string ImageUrl { get; set; }
        public string FullName { get; set; }
    }

    public class MyObject
    {
        public string UserName { get; set; }
        public ObservableCollection<MyDetails> MainInfo { get; set; }
    }

    public class MyViewModel: INotifyPropertyChanged
    {
        public event PropertyChangedEventHandler PropertyChanged;

        public ObservableCollection<MyObject> MainInfo { get; set; }

        protected virtual void NotifyPropertyChanged([CallerMemberName] string propertyName = "")
        {
            PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));        
        }

        
    }

另外,同意@Jason。在你的情况下,如果想在单元格中显示一个集合,你可以使用 Bindable Layouts 而不是将 CollectionView 放在另一个 .这样你只需要像上面的代码一样设置Viewmodel和model。