问题描述
我有3节课,第一节是活动,第二节是进餐,第三节是梯度。 我想显示这些嵌套的CollectionViews,首先显示活动,接下来的饭菜以及最后的梯度。我仍然收到“属性'ElementTemplateContent'设置了多次。”。 前两个CollectionViews正常工作。当我尝试添加第三个问题时出现了问题。 我还尝试添加Bindable布局而不是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,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",Calories = 20,Carbo = 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,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>