2017-05-04 80 views
0

我想在Xamarin.Forms中显示带有自定义标题(允许数据输入)和自定义页脚(包含“取消”/“继续”按钮)的ListView的简单窗体。我不能让ListView垂直填充表单(我希望表单底部的“取消”/“继续”按钮,而不考虑列表的长度。)Xamarin.Forms布局问题

我在哪里出错了?试过几乎所有VerticalOptions的联合对抗ListView的,但我总是与“取消” /“继续”按钮来直接下的“确定”按钮,坐在...

<?xml version="1.0" encoding="utf-8" ?> 
<ContentPage x:Class="MyCompany.Views.MyPage" 
         xmlns="http://xamarin.com/schemas/2014/forms" 
         xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" 
         Title="{Binding Path=Title}"> 

    <ListView Margin="15" VerticalOptions="FillAndExpand"> 

     <ListView.HeaderTemplate> 
      <DataTemplate> 

       <StackLayout VerticalOptions="Start"> 
        <Label HorizontalTextAlignment="Center" Text="Type something" /> 
        <Entry /> 
        <Button HorizontalOptions="Center" Text="Ok" /> 
       </StackLayout> 

      </DataTemplate> 
     </ListView.HeaderTemplate> 

     <ListView.FooterTemplate> 
      <DataTemplate> 

       <Grid VerticalOptions="End"> 

        <Grid.ColumnDefinitions> 
         <ColumnDefinition Width="*" /> 
         <ColumnDefinition Width="2*" /> 
         <ColumnDefinition Width="*" /> 
         <ColumnDefinition Width="2*" /> 
         <ColumnDefinition Width="*" /> 
        </Grid.ColumnDefinitions> 

        <Button Grid.Column="1" Text="Cancel" /> 
        <Button Grid.Column="3" Text="Complete" /> 

       </Grid> 

      </DataTemplate> 
     </ListView.FooterTemplate> 

    </ListView> 

</ContentPage> 

根据记录,在应用程序运行结束(目前)在Android上,但我不认为这有什么区别

+0

如果答案对您有帮助,请考虑标记为answer/upvoting。 –

回答

2

我不能完全得到它要么使用标题和页脚。另外,您也可以只将它包装在一个网格,像这样:

<Grid> 
    <Grid.RowDefinitions> 
     <RowDefinition Height="Auto" /> 
     <RowDefinition Height="*" /> 
     <RowDefinition Height="Auto" /> 
    </Grid.RowDefinitions> 
    <StackLayout Grid.Row="0" VerticalOptions="Start"> 
     <Label HorizontalTextAlignment="Center" Text="Type something" /> 
     <Entry /> 
     <Button HorizontalOptions="Center" Text="Ok" /> 
    </StackLayout> 
    <ListView Grid.Row="1" ItemsSource="{Binding .}" Margin="15" VerticalOptions="FillAndExpand" /> 
    <Grid Grid.Row="2" VerticalOptions="End" HeightRequest="40"> 
     <Grid.ColumnDefinitions> 
      <ColumnDefinition Width="*" /> 
      <ColumnDefinition Width="2*" /> 
      <ColumnDefinition Width="*" /> 
      <ColumnDefinition Width="2*" /> 
      <ColumnDefinition Width="*" /> 
     </Grid.ColumnDefinitions> 

     <Button Grid.Column="1" Text="Cancel" /> 
     <Button Grid.Column="3" Text="Complete" /> 
    </Grid> 
</Grid> 

更新:我和ListView注意到的行为是,它使得页脚在ListView的最后一个项目之后直接。所以如果你的ListView只有4个项目,它会将标题直接放在它之后。先给页脚和ListView背景颜色,你可能会看到这样的内容:

enter image description here

我不认为这种行为可以足不出户,我建议电网路线被改变。

+0

谢谢Steven,我知道我可以用Grid来做,我实际上已经用StackLayout做了,但我不明白为什么我不能简单地在ListView中做所有事情。 –

+0

查看更新后的答案。 –