如何在ListView中禁用滚动?

Pio*_*rek 4 xamarin xamarin.forms

Xamarin.Forms ListView有一些趋势,在一些最大高度后停止拉伸.当我在ListView中放入太多项目时,它会创建滚动条,当我添加更多它们时,它的高度不会增加.

如果<ListView>滚动条位于<ScrollView>具有滚动条的对象内,则可能会让用户感到困惑.布局bahaves不自然,迫使用户滚动到listview的末尾,以便能够继续滚动scrollView.

所以,总结一下:

如何在ListView中禁用滚动条,强制它具有所有内部子项的高度?

儿童没有平等的高度.此外,他们可以在应用程序生命周期中更

<ScrollView>
    <StackLayout>
        <!-- some buttons and labels -->
        <ListView ItemsSource="{Binding Data}">
            <ListView.ItemTemplate>
                <DataTemplate>
                    <ViewCell>
                        <StackLayout Padding="20">
                            <!-- Some information -->
                        </StackLayout>
                    </ViewCell>
                </DataTemplate>
            </ListView.ItemTemplate>
        </ListView>
    </StackLayout>
</ScrollView>
Run Code Online (Sandbox Code Playgroud)

我测试我的应用程序的平台:Windows 10 UWP.

Pra*_*try 9

我也面临同样的问题,我通过在 Scroll View 中使用 Bindable StackLayout 解决了它。

<ScrollView>
    <StackLayout BindableLayout.ItemsSource="{Binding ItemSource}">
        <BindableLayout.ItemTemplate>
            <DataTemplate>
                 <Label Text="{Binding Name}" />
            </DataTemplate>
        </BindableLayout.ItemTemplate>
    </StackLayout>
</ScrollView>
Run Code Online (Sandbox Code Playgroud)


Aka*_*ava 7

Listview已经有一个内置的滚动机制,你永远不应该尝试放入ListView内部ScrollView.

ListView使用UI虚拟化,这意味着它只会在可见视图中创建所需的项目,而不是所有项目.例如,如果您加载240个国家/地区,它实际上只会创建20个国家/地区,当您滚动时,它会创建更多或重复使用现有项目.

通过放入ListView内部ScrollView,您将禁用UI虚拟化.

事实上,Xamarin.Forms滚动没有做任何特别的事情,它是提供UI虚拟化以提高速度的底层平台Android/iOS/Windows的功能.