移动列表视图末尾的按钮- Xamarin表单

zhte4eai  于 9个月前  发布在  其他
关注(0)|答案(1)|浏览(68)

我希望在我的代码中重新定位一个按钮,以结束列表视图。目前,该按钮始终可见,但我的目标是,只有当用户滚动到列表视图的末尾时,它才能可见。你能指导我如何做到这一点吗?

<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             xmlns:viewModels="clr-namespace:XXX.XXX.ExternalDisplay.App.ViewModels"
             xmlns:converters="clr-namespace:XXX.XXX.ExternalDisplay.App.Converters"
             xmlns:model="clr-namespace:XXX.XXX.ExternalDisplay.Core.Models;assembly=XXX.XXX.ExternalDisplay.Core"
             x:Class="XXX.XXX.ExternalDisplay.App.Views.Checklist"
             xmlns:xct="http://xamarin.com/schemas/2020/toolkit"
             x:DataType="viewModels:ChecklistViewModel"
             NavigationPage.HasNavigationBar="False"
             BackgroundColor="{StaticResource BlackBackgroundColor}">

<ContentPage.Resources>
    <ResourceDictionary>
        <xct:InvertedBoolConverter x:Key="InvertedBoolConverter" />
        <converters:CheckedColorConverter x:Key="CheckedColorConverter" />
        <converters:InverseBooleanConverter x:Key="InverseBooleanConverter" />
    </ResourceDictionary>
</ContentPage.Resources>

<StackLayout Padding="5">
    <Grid BackgroundColor="{StaticResource MenuBackgroundColor}" ColumnDefinitions="Auto, *, Auto" Padding="8" MinimumHeightRequest="20">
        <Label Grid.Column="0" Text="Sina" FontSize="Medium" TextColor="White" HorizontalOptions="Center" VerticalOptions="StartAndExpand" />
        <Label Grid.Column="1" Text="Checklist" FontSize="Medium" TextColor="White" HorizontalOptions="Center" VerticalOptions="StartAndExpand" />
        <Label Grid.Column="2" Text="Truck" FontSize="Medium" TextColor="White" HorizontalOptions="Center" VerticalOptions="StartAndExpand" />
    </Grid>

    <Grid>
        <ListView ItemsSource="{Binding ChecklistSections}" HasUnevenRows="True"
                  HorizontalOptions="FillAndExpand" VerticalOptions="FillAndExpand" Margin="0,10,0,0">
            <ListView.ItemTemplate>
                <DataTemplate x:DataType="model:ChecklistSection">
                    <ViewCell>
                        <StackLayout Padding="5">
                            <Label Text="{Binding ChecklistCategory.Name}" FontAttributes="Bold" Padding="5,0,0,0" FontSize="Medium" TextColor="White" />

                            <Frame CornerRadius="10" BorderColor="White" BackgroundColor="{StaticResource BlackBackgroundColor}" HasShadow="True" IsClippedToBounds="True" Padding="0">
                                <StackLayout BindableLayout.ItemsSource="{Binding ChecklistItems}" Padding="5">
                                    <BindableLayout.ItemTemplate>
                                        <DataTemplate x:DataType="model:ChecklistItem">
                                            <StackLayout Padding="5" Orientation="Vertical">
                                                <StackLayout Orientation="Horizontal">
                                                    <Label Text="{Binding ItemText}" FontSize="Medium" TextColor="White" VerticalOptions="Center"/>
                                                    <StackLayout Orientation="Horizontal" VerticalOptions="End" HorizontalOptions="EndAndExpand">
                                                        <CheckBox IsChecked="{Binding Value}" Color="Green" HorizontalOptions="EndAndExpand"/>
                                                        <CheckBox IsChecked="{Binding Value, Converter={StaticResource InverseBooleanConverter}}" Color="Red" HorizontalOptions="EndAndExpand"/>
                                                    </StackLayout>
                                                </StackLayout>
                                                <Editor IsVisible="{Binding Value, Converter={StaticResource InverseBooleanConverter}}"
                                                        Placeholder="Comments" FontSize="Small" HorizontalOptions="FillAndExpand" TextColor="White" BackgroundColor="{StaticResource MenuBackgroundColor}" />
                                            </StackLayout>
                                        </DataTemplate>
                                    </BindableLayout.ItemTemplate>
                                </StackLayout>
                            </Frame>
                        </StackLayout>
                    </ViewCell>
                </DataTemplate>
            </ListView.ItemTemplate>
        </ListView>
    </Grid>
    
    <Button Text="{Binding ButtonText}" Command="{Binding SubmitCommand}" BackgroundColor="{StaticResource WarningBackgroundColor}" BorderRadius="10" FontAttributes="Bold" TextColor="White" HorizontalOptions="Center" VerticalOptions="EndAndExpand"/>
</StackLayout>
pgky5nke

pgky5nke1#

目前,该按钮始终可见,但我的目标是,只有当用户滚动到列表视图的末尾时,它才能可见。你能指导我如何做到这一点吗?
您可以将按钮放入ListView.Footer。就像这样:

.....
        </ListView.ItemTemplate>
    <ListView.Footer>
        <Button Text="{Binding ButtonText}" Command="{Binding SubmitCommand}" BackgroundColor="{StaticResource WarningBackgroundColor}" BorderRadius="10" FontAttributes="Bold" TextColor="White" HorizontalOptions="Center" VerticalOptions="EndAndExpand"/>
    </ListView.Footer>
</ListView>

它可以满足您的需求。有关更多信息,您可以参考页眉和页脚。

相关问题