What is the accepted way of displaying two variably sized lists on a single page in Xamarin Forms?
up vote
0
down vote
favorite
I want to maintain a completely declarative UI with Xamarin data binding.
I followed this thread which is a nightmare that doesn't end well.
https://forums.xamarin.com/discussion/19874/listview-inside-stacklayout-a-height-problem/p2
They essentially settled on this, attempting to dynamically size the listviews based on the content (looks brittle): Xamarin.Forms ListView size to content?
Using this code, my listviews yield a bunch of blank space after the actual content. Totally out of control. Yes, I tried HasUnevenRows="true"
<ScrollView>
<Grid >
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<Grid Grid.Row="0">
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<Label Grid.Row ="0" Grid.Column="0" Text="Category: " />
<Label Grid.Row ="1" Grid.Column="0" Text="Meal Time: " />
<Label Grid.Row ="0" Grid.Column="1" Text="{Binding Recipe.Category}" />
<Label Grid.Row ="1" Grid.Column="1" Text="{Binding Recipe.MealTime}" />
</Grid>
<ListView VerticalOptions="Start" Grid.Row="1" HasUnevenRows="False" x:Name="IngredientsListView"
ItemsSource="{Binding Recipe.Ingredients}"
RefreshCommand="{Binding LoadRecipesCommand}"
>
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>
<Grid Padding="0">
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<Label Grid.Row="0" Grid.Column="0" Text="{Binding }"/>
<Label Grid.Row ="0" Grid.Column="1" FontAttributes="Bold" Text="{Binding Count}" />
<Label Grid.Row ="0" Grid.Column="2" FontAttributes="Bold" Text="{Binding Measure}" />
<Label Grid.Row ="0" Grid.Column="3" FontAttributes="Bold" Text="{Binding Name}" />
<Label Grid.Row ="1" Grid.Column="2" Grid.ColumnSpan="2" FontAttributes="Italic" FontSize="Micro" Text="{Binding Note}" />
</Grid>
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
<ListView VerticalOptions="Start" Grid.Row="2" HasUnevenRows="False" x:Name="InstructionsListView"
ItemsSource="{Binding Recipe.Instructions}"
>
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>
<Label Text="{Binding .}"/>
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</Grid>
</ScrollView>
forms listview xamarin
add a comment |
up vote
0
down vote
favorite
I want to maintain a completely declarative UI with Xamarin data binding.
I followed this thread which is a nightmare that doesn't end well.
https://forums.xamarin.com/discussion/19874/listview-inside-stacklayout-a-height-problem/p2
They essentially settled on this, attempting to dynamically size the listviews based on the content (looks brittle): Xamarin.Forms ListView size to content?
Using this code, my listviews yield a bunch of blank space after the actual content. Totally out of control. Yes, I tried HasUnevenRows="true"
<ScrollView>
<Grid >
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<Grid Grid.Row="0">
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<Label Grid.Row ="0" Grid.Column="0" Text="Category: " />
<Label Grid.Row ="1" Grid.Column="0" Text="Meal Time: " />
<Label Grid.Row ="0" Grid.Column="1" Text="{Binding Recipe.Category}" />
<Label Grid.Row ="1" Grid.Column="1" Text="{Binding Recipe.MealTime}" />
</Grid>
<ListView VerticalOptions="Start" Grid.Row="1" HasUnevenRows="False" x:Name="IngredientsListView"
ItemsSource="{Binding Recipe.Ingredients}"
RefreshCommand="{Binding LoadRecipesCommand}"
>
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>
<Grid Padding="0">
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<Label Grid.Row="0" Grid.Column="0" Text="{Binding }"/>
<Label Grid.Row ="0" Grid.Column="1" FontAttributes="Bold" Text="{Binding Count}" />
<Label Grid.Row ="0" Grid.Column="2" FontAttributes="Bold" Text="{Binding Measure}" />
<Label Grid.Row ="0" Grid.Column="3" FontAttributes="Bold" Text="{Binding Name}" />
<Label Grid.Row ="1" Grid.Column="2" Grid.ColumnSpan="2" FontAttributes="Italic" FontSize="Micro" Text="{Binding Note}" />
</Grid>
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
<ListView VerticalOptions="Start" Grid.Row="2" HasUnevenRows="False" x:Name="InstructionsListView"
ItemsSource="{Binding Recipe.Instructions}"
>
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>
<Label Text="{Binding .}"/>
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</Grid>
</ScrollView>
forms listview xamarin
add a comment |
up vote
0
down vote
favorite
up vote
0
down vote
favorite
I want to maintain a completely declarative UI with Xamarin data binding.
I followed this thread which is a nightmare that doesn't end well.
https://forums.xamarin.com/discussion/19874/listview-inside-stacklayout-a-height-problem/p2
They essentially settled on this, attempting to dynamically size the listviews based on the content (looks brittle): Xamarin.Forms ListView size to content?
Using this code, my listviews yield a bunch of blank space after the actual content. Totally out of control. Yes, I tried HasUnevenRows="true"
<ScrollView>
<Grid >
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<Grid Grid.Row="0">
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<Label Grid.Row ="0" Grid.Column="0" Text="Category: " />
<Label Grid.Row ="1" Grid.Column="0" Text="Meal Time: " />
<Label Grid.Row ="0" Grid.Column="1" Text="{Binding Recipe.Category}" />
<Label Grid.Row ="1" Grid.Column="1" Text="{Binding Recipe.MealTime}" />
</Grid>
<ListView VerticalOptions="Start" Grid.Row="1" HasUnevenRows="False" x:Name="IngredientsListView"
ItemsSource="{Binding Recipe.Ingredients}"
RefreshCommand="{Binding LoadRecipesCommand}"
>
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>
<Grid Padding="0">
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<Label Grid.Row="0" Grid.Column="0" Text="{Binding }"/>
<Label Grid.Row ="0" Grid.Column="1" FontAttributes="Bold" Text="{Binding Count}" />
<Label Grid.Row ="0" Grid.Column="2" FontAttributes="Bold" Text="{Binding Measure}" />
<Label Grid.Row ="0" Grid.Column="3" FontAttributes="Bold" Text="{Binding Name}" />
<Label Grid.Row ="1" Grid.Column="2" Grid.ColumnSpan="2" FontAttributes="Italic" FontSize="Micro" Text="{Binding Note}" />
</Grid>
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
<ListView VerticalOptions="Start" Grid.Row="2" HasUnevenRows="False" x:Name="InstructionsListView"
ItemsSource="{Binding Recipe.Instructions}"
>
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>
<Label Text="{Binding .}"/>
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</Grid>
</ScrollView>
forms listview xamarin
I want to maintain a completely declarative UI with Xamarin data binding.
I followed this thread which is a nightmare that doesn't end well.
https://forums.xamarin.com/discussion/19874/listview-inside-stacklayout-a-height-problem/p2
They essentially settled on this, attempting to dynamically size the listviews based on the content (looks brittle): Xamarin.Forms ListView size to content?
Using this code, my listviews yield a bunch of blank space after the actual content. Totally out of control. Yes, I tried HasUnevenRows="true"
<ScrollView>
<Grid >
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<Grid Grid.Row="0">
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<Label Grid.Row ="0" Grid.Column="0" Text="Category: " />
<Label Grid.Row ="1" Grid.Column="0" Text="Meal Time: " />
<Label Grid.Row ="0" Grid.Column="1" Text="{Binding Recipe.Category}" />
<Label Grid.Row ="1" Grid.Column="1" Text="{Binding Recipe.MealTime}" />
</Grid>
<ListView VerticalOptions="Start" Grid.Row="1" HasUnevenRows="False" x:Name="IngredientsListView"
ItemsSource="{Binding Recipe.Ingredients}"
RefreshCommand="{Binding LoadRecipesCommand}"
>
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>
<Grid Padding="0">
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<Label Grid.Row="0" Grid.Column="0" Text="{Binding }"/>
<Label Grid.Row ="0" Grid.Column="1" FontAttributes="Bold" Text="{Binding Count}" />
<Label Grid.Row ="0" Grid.Column="2" FontAttributes="Bold" Text="{Binding Measure}" />
<Label Grid.Row ="0" Grid.Column="3" FontAttributes="Bold" Text="{Binding Name}" />
<Label Grid.Row ="1" Grid.Column="2" Grid.ColumnSpan="2" FontAttributes="Italic" FontSize="Micro" Text="{Binding Note}" />
</Grid>
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
<ListView VerticalOptions="Start" Grid.Row="2" HasUnevenRows="False" x:Name="InstructionsListView"
ItemsSource="{Binding Recipe.Instructions}"
>
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>
<Label Text="{Binding .}"/>
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</Grid>
</ScrollView>
forms listview xamarin
forms listview xamarin
asked Nov 9 at 3:09
Sean Anderson
170215
170215
add a comment |
add a comment |
active
oldest
votes
active
oldest
votes
active
oldest
votes
active
oldest
votes
active
oldest
votes
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53219309%2fwhat-is-the-accepted-way-of-displaying-two-variably-sized-lists-on-a-single-page%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown