C# Xamarin表单:StackLayout中ListView上的布局需要帮助
我正在尝试创建一个视图,其中有多个控件位于StackLayout的中心。当我只有这样一个:C# Xamarin表单:StackLayout中ListView上的布局需要帮助,c#,xamarin,xamarin.forms,C#,Xamarin,Xamarin.forms,我正在尝试创建一个视图,其中有多个控件位于StackLayout的中心。当我只有这样一个: <StackLayout Orientation="Vertical" HorizontalOptions="Center" > <controls:BindablePicker /> </StackLayout> 它工作得很好: 但是,当我尝试添加ListView时,例如: <StackLayout Orientation="Vertical"
<StackLayout Orientation="Vertical" HorizontalOptions="Center" >
<controls:BindablePicker />
</StackLayout>
它工作得很好:
但是,当我尝试添加ListView时,例如:
<StackLayout Orientation="Vertical" HorizontalOptions="Center" >
<controls:BindablePicker />
<ListView HorizontalOptions="Center" >
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>
<ViewCell.View>
<StackLayout Orientation="Horizontal">
<controls:BindablePicker Title="Length" />
<controls:BindablePicker Title="Units" />
</StackLayout>
</ViewCell.View>
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</StackLayout>
所有内容都左对齐并占据整个屏幕:
我希望所有控件的宽度尽可能短,以屏幕为中心。现在我正在使用ListView,因为我正在绑定一个对象列表,我认为这比尝试使用网格更容易
如有任何建议,将不胜感激。谢谢
更新我更新了我的ViewCell,用网格替换StackLayout,然后将ListView放入网格中,如下所示:
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="2*" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<ListView Grid.Row="0" Grid.Column="1" HorizontalOptions="Center" SeparatorVisibility="None">
这正是我想要的,除了顶部选择器占据了整个屏幕的宽度,而不是它需要的宽度和中心。第一个StackLayout示例和第二个StackLayout示例(ViewCell内部的示例)之间有一个小的区别,而这正是您遇到的问题的根源:
- 第一个StackLayout示例是
Orientation=“Vertical”
- 第二个StackLayout示例(ViewCell内部的示例)是
Orientation=“Horizontal”
Orientation=“Vertical”
时仅支持HorizontalOptions
属性,在Orientation=“Horizontal”
时仅支持VerticalOptions
属性
StackLayouts的这个“特性”没有很好的文档记录,我找不到一个示例链接来指定它。就我个人而言,我是在Xamarin大学的一节课上从老师那里学到这一点的
要使ViewCell的控件居中,请使用栅格布局而不是StackLayout。下面是一个例子:
非常感谢您的回复!我会尝试一下,如果我不能让它工作,我会告诉你。请参阅上面的更新。我离你更近了,但还是少了一块。谢谢你,艾德!如果有机会,让我们将此问题标记为已回答,并将更新移至StackOverflow上的新问题。这将有助于任何用户在未来与相同的初始问题,我非常高兴地帮助你与网格!新增问题: