我试图自己做一个小的MAUI项目,看起来HorizontalStackLayout对查尔兹控件没有影响。
下面是xaml代码:
<CollectionView.ItemTemplate>
<DataTemplate x:DataType="model:Game">
<Border HeightRequest="100"
Stroke="Gray"
BackgroundColor="GhostWhite"
StrokeThickness="3"
StrokeShape="RoundRectangle 10">
<VerticalStackLayout>
<Label Text="{Binding Name}"
HorizontalTextAlignment="Start"
TextColor="Black"
FontSize="30"
Margin="10, 0, 0, 10"/>
<CollectionView ItemsSource="{Binding ConsolesList}"
x:Name="ListConsole">
<CollectionView.ItemTemplate>
<DataTemplate x:DataType="model:Console">
<HorizontalStackLayout>
<Label Text="{Binding Name}"
TextColor="Black"
Margin="10, 0, 0, 10"/>
</HorizontalStackLayout>
</DataTemplate>
</CollectionView.ItemTemplate>
</CollectionView>
</VerticalStackLayout>
<Border.GestureRecognizers>
<TapGestureRecognizer Command="{Binding Source={RelativeSource AncestorType={x:Type viewmodel:MainViewModel}}, Path=TapCommand}"
CommandParameter="{Binding .}"/>
</Border.GestureRecognizers>
</Border>
</DataTemplate>
</CollectionView.ItemTemplate>
结果是:
如您所见,第二个标签中的控制台名称是垂直放置的,而不是水平放置的。
我尝试移除horizontalStackLayout并将VerticalStackLayout更改为水平堆栈布局,但即使这样,也没有任何变化。我还尝试使用普通的stackLayout通过水平和垂直堆栈布局更改这两个堆栈布局,并为第一个堆栈布局指定垂直方向,为第二个堆栈布局指定水平方向,但仍然没有任何变化。
我错过了什么吗?
1条答案
按热度按时间s4n0splo1#
你的整个
DataTemplate
对于
ItemsSource
中的每个项目重复一次。这意味着您的UI对于每个控制台都包含一个HorizontalStackLayout
CollectionView
有一个ItemsLayout
属性,可以将其设置为HorizontalList
,以便在模板中对项进行布局水平,而不是默认的垂直布局