如何调整Xaml StackLayout的滚动高度?

时间:2016-11-18 15:52:08

标签: xaml xamarin

我有一个StackLayout,当选择用户时,它会动态添加项目。我希望它的高度大约为200,如果列表长于此值,它应该是可滚动的。

如果我像现在一样向它添加一个高度请求,它会调整高度并且滚动条可以工作但是会阻止在框底部之后添加项目(因此滚动条基本没有意义。

这是代码,StackLayout被称为'readout':

<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             x:Class="Clocker.MainPage" >
  <StackLayout x:Name="mainstack">
    <Picker x:Name="locationpicker" SelectedIndexChanged="locationpicker_SelectedIndexChanged" BackgroundColor="#baf4d5"></Picker>
    <Label x:Name="timeLabel" FontSize="50" HorizontalTextAlignment="Center" VerticalTextAlignment="Start" TextColor="White" BackgroundColor="#59a092"/>
    <ScrollView Orientation="Vertical" BackgroundColor="#baf4d5">
      <StackLayout x:Name="readOut">

      </StackLayout>
    </ScrollView>
    <ListView x:Name="userslist" BackgroundColor="#59a092">
      <ListView.ItemTemplate>
        <DataTemplate>
          <ViewCell>
            <ViewCell.ContextActions>
              <MenuItem Clicked="OnIn" CommandParameter="{Binding .}"
                 Text="In" />
              <MenuItem Clicked="OnOut" CommandParameter="{Binding .}"
                 Text="Out" IsDestructive="True" />
            </ViewCell.ContextActions>
            <StackLayout Padding="15,0">
              <Label x:Name="lblname" Text="{Binding FullName}" TextColor="White" />
            </StackLayout>
          </ViewCell>
        </DataTemplate>
      </ListView.ItemTemplate>
    </ListView>
    </StackLayout>
</ContentPage>

1 个答案:

答案 0 :(得分:0)

我的应用中有2或3个页面或多或少与您描述的内容相似。 我的解决方案使用了2个列表。 或多或少是这样的:

        <Grid ColumnSpacing="0" RowSpacing="0">
            <Grid.RowDefinitions>
                <RowDefinition Height="Auto" />
                <RowDefinition Height="2*" />
                <RowDefinition Height="8*" />
                <RowDefinition Height="Auto" />
            </Grid.RowDefinitions>

第1行是我的第一个列表,第2行是第二个列表的位置。

我这样做(0是标题,3是页脚),所以我在左上方有20%左右的空间,剩下的空间分配给第二个列表。

希望它清楚。