【发布时间】:2019-02-18 23:13:45
【问题描述】:
我有下面的 xaml 布局,如下所示:
<ContentPage.Content>
<ScrollView>
<StackLayout Padding="3">
<Label x:Name="Totalhours" Text="{Binding THours}" TextColor="Black" HorizontalOptions="CenterAndExpand" VerticalOptions="Center" FontSize="Large" />
<microcharts:ChartView Margin="0,10,0,4" x:Name="chartView" HeightRequest="200" Chart="{Binding Chart}" />
<ListView x:Name="lvActivities" ItemsSource="{Binding LaborMiscTimeList}" ItemTapped="lvActivities_ItemTapped" CachingStrategy="RecycleElement" IsGroupingEnabled="True" SeparatorVisibility="None" HasUnevenRows="True">
<ListView.GroupHeaderTemplate>
<DataTemplate>
<ViewCell>
<Grid Margin="8,8,2,8">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"></ColumnDefinition>
<ColumnDefinition Width="80"></ColumnDefinition>
</Grid.ColumnDefinitions>
<Label Text="{Binding Key}" FontSize="Large" TextColor="Black" Grid.Column="0"/>
</Grid>
</ViewCell>
</DataTemplate>
</ListView.GroupHeaderTemplate>
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>
<cardView:CardView
BackgroundColor="White"
CardViewHasShadow="True"
HeightRequest="145">
<cardView:CardView.CardViewContent>
<Grid Padding="1">
<Grid.RowDefinitions>
<RowDefinition Height="*"></RowDefinition>
<RowDefinition Height="*"></RowDefinition>
<RowDefinition Height="Auto"></RowDefinition>
<RowDefinition Height="Auto"></RowDefinition>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="30"></ColumnDefinition>
<ColumnDefinition Width="2*"></ColumnDefinition>
<ColumnDefinition Width="5*"></ColumnDefinition>
</Grid.ColumnDefinitions>
<Image Source="{Binding WorkCodeImage}" Grid.Row ="0" Grid.Column="0" HorizontalOptions="FillAndExpand" Aspect="AspectFit"/>
<Label Text="{Binding WorkDescription}" Grid.Row="0" Grid.Column="1" FontSize="20" VerticalOptions="Center"></Label>
<Label Text="{Binding StartEndTime}" Grid.Row="1" Grid.Column="1" TextColor="Black" FontSize="15" VerticalOptions="StartAndExpand"></Label>
<Label Text="{Binding TotalHours}" Margin="10,0,0,0" Grid.Row="0" Grid.Column="2" Grid.RowSpan="2" HorizontalOptions="EndAndExpand" TextColor="Black" VerticalOptions="Center"></Label>
<Label Text ="Notes" Grid.Row="2" Grid.Column="1" VerticalOptions="Center"></Label>
<local:EditorXF Text="{Binding Comments}" Focused="DriverNotes_Focused" Grid.Row="3" Grid.Column="1" Grid.ColumnSpan="2" x:Name="DriverNotes"
FontSize="Small" TextColor="Black" VerticalOptions="FillAndExpand">
</local:EditorXF>
</Grid>
</cardView:CardView.CardViewContent>
</cardView:CardView>
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
<ListView.Footer>
<Label/>
</ListView.Footer>
</ListView>
</StackLayout>
</ScrollView>
</ContentPage.Content>
正如我们所见,包含 listview init 的 stacklayout 位于滚动视图中。 当用户滚动它时,我想要整个页面滚动,包括列表视图。 使用此代码,我可以实现此目的,但未显示列表视图的最后 4 到 5 个项目(切断)。
有什么想法吗?
【问题讨论】:
-
摆脱 ScrollView。 ListView 本身是可滚动的,不应包含在另一个 ScrollView 中
-
但我需要整个堆栈布局来滚动列表视图上方
-
使用您的解决方案,仅列出滚动条。其他标签和图表保持不变。我的要求是滚动整个页面。
-
您能向我解释一下您的要求吗?也许我们可以解决这个问题?
-
@G.hakim 下面的解决方案通过使用 listview.header 对我有效。
标签: listview xamarin.forms xamarin.android scrollview