【问题标题】:Listview Scroll End EventListview 滚动结束事件
【发布时间】:2019-09-02 15:52:51
【问题描述】:

我想要 Listview 滚动结束事件,当我有内容时,我会单击该内容以加载更多内容,然后当内容显示时,底部应该滚动。

private void ScrollViewEvent_Scrolled(object sender, ScrolledEventArgs e)
        {
            if (e.ScrollY + ScrollViewEvent.Height >= ScrollViewEvent.ContentSize.Height)
                AtEnd = true;
            else
                AtEnd = false;
        }

        public bool AtEnd
        {
            get
            {
                return m_atEnd;
            }

            set
            {
                if(m_atEnd != value)
                {
                    m_atEnd = value;
                    OnPropertyChanged("AtEnd");

                }
            }
        }

 <ScrollView x:Name="ScrollViewEvent"
                        Scrolled="ScrollViewEvent_Scrolled"
                        VerticalScrollBarVisibility="Never">
</ScrollView>

在内容加载时,底部应自动滚动。我不必滚动它。

【问题讨论】:

    标签: c# xamarin.forms


    【解决方案1】:

    为此,您必须编写自定义渲染器。我在我的一个应用程序中实现了相同的功能。 对于 iOS,您需要实现 UITableViewDelegate 的 DecelerationEnded 事件。 我不确定Android。

    【讨论】:

      【解决方案2】:

      您可以使用 ListView.ScrollTo Method 滚动到 ListView 的最后一项。

                          <Label Grid.Column="0" Text="Id" />
                          <Label Grid.Column="1" Text="First Name" />
                          <Label Grid.Column="2" Text="Surname" />
                          <Label Grid.Column="3" Text="Date Of Birth" />
                      </Grid>
                  </ListView.Header>
      
                  <ListView.ItemTemplate>
                      <DataTemplate>
                          <ViewCell>
                              <Grid>
                                  <Grid.ColumnDefinitions>
                                      <ColumnDefinition Width="*" />
                                      <ColumnDefinition Width="*" />
                                      <ColumnDefinition Width="*" />
                                      <ColumnDefinition Width="*" />
                                  </Grid.ColumnDefinitions>
                                  <Grid.RowDefinitions>
                                      <RowDefinition Height="Auto" />
                                  </Grid.RowDefinitions>
                                  <Label Grid.Column="0" Text="{Binding Id}" />
                                  <Label Grid.Column="1" Text="{Binding FirstName}" />
                                  <Label Grid.Column="2" Text="{Binding Surname}" />
                                  <Label Grid.Column="3" Text="{Binding Age}" />
                              </Grid>
                          </ViewCell>
                      </DataTemplate>
                  </ListView.ItemTemplate>
              </ListView>
      
              <Button
                  x:Name="btn"
                  Clicked="Btn_Clicked"
                  Text=" Load more items" />
          </StackLayout>
      
      
      public partial class Page6 : ContentPage
      {
      
          public PersonViewModel p { get; set; }
          public Page6 ()
          {
              InitializeComponent ();
              p = new PersonViewModel();
              this.BindingContext = p;
      
          }      
      
          private void Btn_Clicked(object sender, EventArgs e)
          {
              personmodel model = p.peoples.Last();
              Device.BeginInvokeOnMainThread(() =>
            listView.ScrollTo(model, ScrollToPosition.End, true));
          }
      }
      
      
      public class PersonViewModel
      {
          public ObservableCollection<personmodel> peoples { get; set; }
      
      
          public PersonViewModel()
          {
              peoples = new ObservableCollection<personmodel>();
            for(int i=0;i<50;i++)
              {
                  peoples.Add(new personmodel() { Id="the "+ i +" item",FirstName="cherry",Surname="Bu",Age=28});
              }
      
      
          }
      }
      

      【讨论】:

        猜你喜欢
        • 2018-10-12
        • 2014-10-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-06-26
        • 1970-01-01
        相关资源
        最近更新 更多