C# Xamarin嵌套少量集合视图

C# Xamarin嵌套少量集合视图,c#,xamarin,nested,collectionview,C#,Xamarin,Nested,Collectionview,我有三节课,第一节是活动课,第二节是吃饭课,第三节是忘恩负义者课。 我想先显示这些嵌套集合视图,然后显示活动、下一顿饭,最后显示忘恩负义者。我仍然得到“属性'ElementTemplateContent'设置了不止一次”。 前两个CollectionView工作正常。当我试图添加第三个时,问题出现了。 我还尝试添加可绑定布局,而不是CollectionView,但出现了相同的错误 <CollectionView Margin="15, 30, 15, 15" Horiz

我有三节课,第一节是活动课,第二节是吃饭课,第三节是忘恩负义者课。 我想先显示这些嵌套集合视图,然后显示活动、下一顿饭,最后显示忘恩负义者。我仍然得到“属性'ElementTemplateContent'设置了不止一次”。 前两个CollectionView工作正常。当我试图添加第三个时,问题出现了。 我还尝试添加可绑定布局,而不是CollectionView,但出现了相同的错误

<CollectionView Margin="15, 30, 15, 15" HorizontalOptions="FillAndExpand" VerticalOptions="FillAndExpand" SelectionMode="None" ItemsSource="{Binding Meal}" IsVisible="{Binding ActType}">
    <CollectionView.ItemsLayout>
        <LinearItemsLayout Orientation="Vertical" ItemSpacing="1"/>
    </CollectionView.ItemsLayout>
    <CollectionView.ItemTemplate>
        <DataTemplate>
            <Label TextColor="#2F3246" FontSize="12">
                <Label.FormattedText>
                    <FormattedString>
                        <FormattedString.Spans>
                            <Span Text="{Binding Name}" FontAttributes="Bold"/>
                        </FormattedString.Spans>
                    </FormattedString>
                </Label.FormattedText>
            </Label>
            <CollectionView Margin="15, 30, 15, 15" HorizontalOptions="FillAndExpand" VerticalOptions="FillAndExpand" SelectionMode="None" ItemsSource="{Binding Ingradients}">
                <CollectionView.ItemsLayout>
                    <LinearItemsLayout Orientation="Vertical" ItemSpacing="1"/>
                </CollectionView.ItemsLayout>
                <CollectionView.ItemTemplate>
                    <DataTemplate>
                        <Label TextColor="#2F3246" FontSize="12">
                            <Label.FormattedText>
                                <FormattedString>
                                    <FormattedString.Spans>
                                        <Span Text="{Binding Name}" FontAttributes="Bold"/>
                                    </FormattedString.Spans>
                                </FormattedString>
                            </Label.FormattedText>
                        </Label>
                    </DataTemplate>
                </CollectionView.ItemTemplate>
            </CollectionView>
        </DataTemplate>
    </CollectionView.ItemTemplate>
</CollectionView>

这就是对象的外观

new Activity {
    Name = "Breakfast",
    Color = "#498467",
    // Color = "#C5283D",
    ActType = true,
    Time = "07:00",
    Meal = new ObservableCollection<Meal>{
        new Meal
        {
            Name = "Oatmeal",
            Ingradients = new ObservableCollection<Ingradients>
            {
                new Ingradients
                {
                    Name = "Oat",
                    Amount = 100.0,
                    Calories = 200,
                    Carbo = 120.0,
                    Protein = 20.0,
                    Fat = 10.0
                },
                new Ingradients
                {
                    Name = "Milk",
                    Amount = 100.0,
                    Calories = 20,
                    Carbo = 20.0,
                    Protein = 20.0,
                    Fat = 5.0
                }
            }
        }
    }
}
新活动{
Name=“早餐”,
Color=“#498467”,
//Color=“#C5283D”,
ActType=true,
Time=“07:00”,
膳食=新的可观察到的收集{
新餐
{
Name=“燕麦”,
Ingradients=新的可观察到的集合
{
新忘恩负义者
{
Name=“Oat”,
金额=100.0,
卡路里=200,
Carbo=120.0,
蛋白质=20.0,
Fat=10.0
},
新忘恩负义者
{
Name=“牛奶”,
金额=100.0,
卡路里=20,
Carbo=20.0,
蛋白质=20.0,
Fat=5.0
}
}
}
}
}
某些类型的容器(例如,
DataTemplate
)只能包含一个子容器。您应该将
DataTemplate
内容包装到单个对象中,如
StackLayout

<CollectionView Margin="15, 30, 15, 15" HorizontalOptions="FillAndExpand" VerticalOptions="FillAndExpand" SelectionMode="None" ItemsSource="{Binding Meal}" IsVisible="{Binding ActType}">
    <CollectionView.ItemsLayout>
        <LinearItemsLayout Orientation="Vertical" ItemSpacing="1"/>
    </CollectionView.ItemsLayout>
    <CollectionView.ItemTemplate>
        <DataTemplate>
            <StackLayout Orientation="Vertical"> // <--------------------------
              <Label TextColor="#2F3246" FontSize="12">
                <Label.FormattedText>
                    <FormattedString>
                        <FormattedString.Spans>
                            <Span Text="{Binding Name}" FontAttributes="Bold"/>
                        </FormattedString.Spans>
                    </FormattedString>
                </Label.FormattedText>
              </Label>
              <CollectionView Margin="15, 30, 15, 15" HorizontalOptions="FillAndExpand" VerticalOptions="FillAndExpand" SelectionMode="None" ItemsSource="{Binding Ingradients}">
                <CollectionView.ItemsLayout>
                    <LinearItemsLayout Orientation="Vertical" ItemSpacing="1"/>
                </CollectionView.ItemsLayout>
                <CollectionView.ItemTemplate>
                    <DataTemplate>
                        <Label TextColor="#2F3246" FontSize="12">
                            <Label.FormattedText>
                                <FormattedString>
                                    <FormattedString.Spans>
                                        <Span Text="{Binding Name}" FontAttributes="Bold"/>
                                    </FormattedString.Spans>
                                </FormattedString>
                            </Label.FormattedText>
                        </Label>
                    </DataTemplate>
                </CollectionView.ItemTemplate>
              </CollectionView>
            </StackLayout> // <--------------------------
        </DataTemplate>
    </CollectionView.ItemTemplate>
</CollectionView>

//