Xamarin表单ListView滚动位置

时间:2016-11-14 08:31:26

标签: xamarin xamarin.forms

我有一个非常简单的主 - 详细视图,左边是会议列表,主要区域是选定的会议详情。

有些会议细节屏幕较大且可滚动。

我遇到的问题是:

  • 参加一个较大的会议(如会议#11)
  • 向下滚动
  • 在不滚动(例如会议#2)
  • 的情况下,转到完全适合屏幕的会议
  • 会议详情在顶部(见下文)

向下滚动会议#11

After scrolling down meeting #11

选择会议#2后

After selecting meeting #2

我所做的只是更改详细信息屏幕的绑定上下文。

这是某种错误/功能还是什么? 我可以尝试添加一些代码,在选定项目更改后滚动到顶部,但我想避免这种情况,特别是我的ListView包含一个标题,并且只有API可以滚动到第一个项目元素。 / p>

Xamarin Studio 6.1.2(build 44)

Xamarin表格2.3.2.127

更新1 - 添加了页面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:local="clr-namespace:ListViewScrollToTop"
    x:Class="ListViewScrollToTop.ListViewScrollToTopPage">
    <StackLayout Orientation="Horizontal" Spacing="0">
        <ListView x:Name="MeetingsView" WidthRequest="300" VerticalOptions="Fill"
            SeparatorVisibility="None"
            BackgroundColor="Teal"
            ItemTapped="OnMeetingTapped">
            <ListView.ItemTemplate>
                <DataTemplate>
                    <ViewCell>
                        <Grid>
                            <Grid.RowDefinitions>
                                <RowDefinition Height="Auto"/>
                                <RowDefinition Height="Auto"/>
                            </Grid.RowDefinitions>
                            <Label Grid.Row="0" Text="{Binding Title}"/>
                            <Label Grid.Row="1" Text="{Binding Location}"/>
                        </Grid>
                    </ViewCell>
                </DataTemplate>
            </ListView.ItemTemplate>
        </ListView>
        <ListView x:Name="MeetingDetailsView"
            HorizontalOptions="FillAndExpand"
            VerticalOptions="FillAndExpand"
            SeparatorVisibility="None"
            BackgroundColor="Blue"
            HasUnevenRows="true"
            Header="{Binding .}"
            ItemsSource="{Binding .}">
            <ListView.HeaderTemplate>
                <DataTemplate>
                    <Grid BackgroundColor="White" RowSpacing="0">
                            <Grid.RowDefinitions>
                                <RowDefinition Height="Auto"/>
                                <RowDefinition Height="Auto"/>
                            </Grid.RowDefinitions>
                            <Label Grid.Row="0" Text="{Binding Title}"/>
                            <Label Grid.Row="1" Text="{Binding Location}"/>
                        </Grid>
                </DataTemplate>
            </ListView.HeaderTemplate>
            <ListView.ItemTemplate>
                <DataTemplate>
                    <ViewCell>
                        <ViewCell.View>
                            <StackLayout Orientation="Vertical" Spacing="10" Padding="12" BackgroundColor="Yellow">
                                <Label Text="{Binding Name}"/>
                                <local:RepeaterView Spacing="1"
                                    ItemsSource = "{Binding Documents}"
                                    VerticalOptions="Start">
                                    <local:RepeaterView.ItemTemplate>
                                        <DataTemplate>
                                            <Label Text="{Binding Name}" TextColor="Black" BackgroundColor="Olive" Margin="12"/>
                                        </DataTemplate>
                                    </local:RepeaterView.ItemTemplate>
                                </local:RepeaterView>
                            </StackLayout>
                        </ViewCell.View>
                    </ViewCell>
                </DataTemplate>
            </ListView.ItemTemplate>
        </ListView>
    </StackLayout>
</ContentPage>

更新2 - 添加了Android测试反馈

我无法在Android上重现此错误,只有iOS。

更新3 - 没有标题的测试

即使我删除了详细信息标题,我也可以观察到这个问题。

更新4 - 显示问题的链接解决方案

ListViewScrollToTop

0 个答案:

没有答案