Я разрабатываю кросс-платформенное приложение с использованием Xamarin.Forms. На одной из страниц у меня есть аватар, какая-то информация, а затем ListView
. Дело в том, что все это завернуто в ScrollView
, поэтому я могу прокручивать содержимое. Проблема в том, что я теряю поведение прокрутки ListView
. This're несколько скриншотов:Xamarin.Forms - Высота изменения ListView во время выполнения
Как вы можете видеть представление XAML в основном, аватар Image
(в пожарном изображения), затем «Последний этап проверки» информацию, а затем у нас есть ListView
. Я жестко закодировал HeightRequest
в ListView
, так что он имеет большую высоту. Но дело в том, что когда я прокручиваю нижнюю часть страницы, я не могу продолжать прокручивать ListView
, потому что ScrollView
бесполезно с этим поведением. I нужно использовать ListView
, потому что список проверочных отчетов, которые я показываю там, заполнен из веб-службы, и я обновляю этот список, когда я вхожу и выхожу из страницы. Это код XAML:
<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:checkReport="clr-namespace:HalliganTL.View;assembly=HalliganTL"
xmlns:controls="clr-namespace:ImageCircle.Forms.Plugin.Abstractions;assembly=ImageCircle.Forms.Plugin.Abstractions"
x:Class="HalliganTL.View.ApparatusDetailPage" BackgroundColor="#FFFFFFFF">
<StackLayout Orientation="Vertical" HorizontalOptions="FillAndExpand" VerticalOptions="FillAndExpand">
<ScrollView x:Name="GeneralScrollView"
Orientation="Vertical" VerticalOptions="FillAndExpand"
HorizontalOptions="FillAndExpand">
<Grid HorizontalOptions="FillAndExpand" VerticalOptions="FillAndExpand">
<Grid.RowDefinitions>
<RowDefinition Height="180"></RowDefinition>
<RowDefinition Height="40"></RowDefinition>
<RowDefinition Height="80"></RowDefinition>
<RowDefinition Height="40"></RowDefinition>
<RowDefinition Height="360"></RowDefinition>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"></ColumnDefinition>
</Grid.ColumnDefinitions>
<!-- Top Image -->
<ContentView Grid.Column="0" Grid.Row="0" Padding="15">
<controls:CircleImage x:Name="ApparatusImage"
HeightRequest="150" WidthRequest="150"
VerticalOptions="Center"
BorderColor="#3B5685"
BorderThickness="2"
HorizontalOptions="Center"
Aspect="AspectFill">
</controls:CircleImage>
</ContentView>
<!-- Last Check Separator -->
<AbsoluteLayout Grid.Column="0" Grid.Row="1" x:Name="LastCheckContainerTitle" BackgroundColor="#FFE4E4E9" Padding="5,15,15,5" VerticalOptions="End" >
<Label Text="LAST CHECK" Style="{StaticResource separatorLabel}" />
</AbsoluteLayout>
<!-- Last Check Detail -->
<checkReport:CheckReportViewPage Grid.Column="0" Grid.Row="2" x:Name="LastCheckReportView">
<checkReport:CheckReportViewPage.GestureRecognizers>
<TapGestureRecognizer Tapped="OnLastCheckReportClicked" NumberOfTapsRequired="1" />
</checkReport:CheckReportViewPage.GestureRecognizers>
</checkReport:CheckReportViewPage>
<AbsoluteLayout Grid.Column="0" Grid.Row="3" x:Name="CheckHistoryTitle" BackgroundColor="#FFE4E4E9" Padding="5,15,15,5" >
<Label Text="CHECK HISTORY" Style="{StaticResource separatorLabel}" FontAttributes="None" VerticalOptions="End" />
</AbsoluteLayout>
<!-- Apparatus check history -->
<ListView x:Name="CheckHistoryListView"
HeightRequest="380"
Grid.Column="0" Grid.Row="4"
HorizontalOptions="FillAndExpand"
HasUnevenRows="True"
IsPullToRefreshEnabled="False"
VerticalOptions="FillAndExpand" ItemTapped="OnItemTapped">
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>
<checkReport:CheckReportViewPage/>
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</Grid>
</ScrollView>
<Label Text="Start Check" HeightRequest="60" VerticalOptions="End" BackgroundColor="#3B5685" VerticalTextAlignment="Center" HorizontalTextAlignment="Center" FontSize="18" TextColor="White">
<Label.GestureRecognizers>
<TapGestureRecognizer
Tapped="OnStartCheckClicked"
NumberOfTapsRequired="1" />
</Label.GestureRecognizers>
</Label>
</StackLayout>
</ContentPage>
Поэтому в основном то, что я спрашиваю, как можно добиться чего-то вроде эффекта параллакса, прокрутка вниз, а затем делегировать поведение прокрутки в ListView
таким образом я могу прокручивать каждый пункт в ListView
. В настоящее время я просто могу видеть элементы, которые соответствуют размеру ListView
HeightRequest. В примере скриншота, который я, например, shoing, есть несколько других элементов в этом ListView
, но я не могу прокручивать их, потому что ScrollView
возился с поведением прокрутки ListView
.
Определенно, путь ... работал в нескольких строках – 4gus71n
Быстрый вопрос, есть ли способ показать заголовок, когда ListView не имеет элементов? Потому что, если в моем ListView нет элементов, Заголовок не отображается. – 4gus71n