I have a problem similar to the one expressed in this post: forums.xamarin.com/discussion/19874/listview-inside-stacklayout-a-height-problem. The solution mentioned in that post doesn't work for me.
I have a ContentView
that contains a RelativeLayout
, which contains a single StackLayout
. This StackLayout
partitions the area vertically into 2 sections. The lower section is a horizontal StackLayout
that contains a pair of buttons, while the upper StackLayout
contains a single ListView
. I would like the height of the ListView
to occupy the remaining vertical free space. Instead, the ListView
is sized only to the height required to display the number of items currently bound to it. This is what it looks like:
ravib.com/download/xforms.listview.height.png
My XAML looks like this:
<?xml version="1.0" encoding="utf-8" ?>
<ContentView xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="Xpoc.UI.EmployeePicker">
<ContentView.Content>
<RelativeLayout
BackgroundColor="White">
<StackLayout
BackgroundColor="Aqua" Orientation="Vertical"
VerticalOptions="FillAndExpand" HorizontalOptions="FillAndExpand"
Padding="0"
RelativeLayout.WidthConstraint="{ConstraintExpression Type=RelativeToParent,
Property=Width, Factor=1}"
RelativeLayout.HeightConstraint="{ConstraintExpression Type=RelativeToParent,
Property=Height, Factor=1}">
<StackLayout
BackgroundColor="Green"
Orientation="Vertical"
VerticalOptions="StartAndExpand"
HorizontalOptions="CenterAndExpand">
<ListView
x:Name="_listEmployees" BackgroundColor="Red"
VerticalOptions="FillAndExpand" HorizontalOptions="FillAndExpand"
ItemsSource="{Binding ShiftEditorViewModel.ShiftViewModel.AvailableEmployees}"
ItemTapped="OnEmployeeSelected">
<ListView.ItemTemplate>
<DataTemplate>
<TextCell Text="{Binding EmployeeName}" />
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</StackLayout>
<StackLayout BackgroundColor="Yellow"
Orientation="Horizontal" VerticalOptions="EndAndExpand"
HorizontalOptions="CenterAndExpand">
<Button
x:Name="_btnUnfill" WidthRequest="150" TextColor="Black"
Text="Unfill" Font="Large"
Command="{Binding ShiftEditorViewModel.UnfillEmployeeCommand}" />
<Button
x:Name="_btnCancel" WidthRequest="150" TextColor="Black"
Text="Cancel" Font="Large"
Command="{Binding ShiftEditorViewModel.ShowShiftDetailsCommand}" />
</StackLayout>
</StackLayout>
</RelativeLayout>
</ContentView.Content>
</ContentView>
A nudge in the right direction would be greatly appreciated. Thanks.