簡體   English   中英

Xamarin表單:需要在StackLayout內的ListView上進行布局的幫助

[英]Xamarin Forms: Help needed with layout on a ListView inside a StackLayout

我正在嘗試創建一個視圖,該視圖具有幾個位於StackLayout內部的控件。 當我只有一個這樣的人時:

<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,因為我要綁定對象列表,並且我認為這比嘗試使用Grid容易。

任何建議將不勝感激。 謝謝。

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

Xamarin.Forms中的StackLayouts僅在Orientation="Vertical"時才使用HorizontalOptions屬性,而在Orientation="Horizontal"時才使用VerticalOptions屬性。

StackLayouts的這種“功能”沒有得到很好的記錄,我找不到指定它的示例鏈接。 我個人是在Xamarin大學的一次課堂上從老師那里學到這一事實的。

要居中放置ViewCell的控件,請使用Grid布局而不是StackLayout。 這是一個例子:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM