2016-11-28 61 views
2

我想创建一个视图,其中有多个控件位于StackLayout内部。当我只有一个这样的:Xamarin窗体:在StackLayout中的ListView上布局所需的帮助

<StackLayout Orientation="Vertical" HorizontalOptions="Center" > 
    <controls:BindablePicker /> 
</StackLayout> 

它工作正常: Centered

然而,当我尝试添加一个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> 

一切都是左对齐,并采取整个屏幕: Left justified

我想所有控件的宽度为s尽可能集中在屏幕上。现在我正在使用ListView,因为我绑定了一个对象列表,我认为这会比尝试使用Grid更容易。

任何建议将不胜感激。谢谢。

UPDATE我更新了我的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"> 

这是一个很值得我想要的东西,不同的是顶部选取器正在增加屏幕的整个宽度,而不仅仅是它需要被居中的宽度。

回答

2

还有就是你的第一StackLayout例和第二例StackLayout(在ViewCell内的例子)之间的一个小的差异,这也是造成您遇到的麻烦:

  • 第一StackLayout例子是Orientation="Vertical"
  • 第二StackLayout示例(您的ViewCell内部的例子)是Orientation="Horizontal"

StackLayouts在Xamarin.Forms仅兑现HorizontalOptions p roperty当Orientation="Vertical",并且只有在Orientation="Horizontal"时才会兑现VerticalOptions属性。

StackLayouts的这个“特性”没有很好的记录,我找不到指定它的示例链接。就我个人而言,我在Xamarin大学班的一位讲师身上学到了这个事实。

要使ViewCell的控件居中,请使用网格布局而不是StackLayout。这里有一个例子:

http://www.trsneed.com/customize-xamarin-forms-listview-with-viewcell/

+0

非常感谢您的回复!我会试一试,让我知道如果我不能工作。 –

+0

请参阅上面的更新。我更接近,但仍然缺少一块。 –

+0

谢谢埃德!当你有机会时,让我们将这个问题标记为已回答,并将更新移到StackOverflow的新问题上。这将有助于任何未来的用户提出同样的问题,我非常乐意帮助您使用Grid! –