【问题标题】:How to use the ".ScrollTo" list view method in C#/Xamarin如何在 C#/Xamarin 中使用“.ScrollTo”列表视图方法
【发布时间】:2018-06-06 21:18:07
【问题描述】:

我试图弄清楚如何使用列表视图可用的 ScrollTo 方法。我相信我的最后两个论点是正确的,但我不太确定我的第一个论点是否正确。

这是带有我的列表视图的 xaml...

         <ListView
            x:Name="MyList"
            Grid.Row="0"
            Grid.RowSpan="4"
            Grid.Column="0"
            Grid.ColumnSpan="8"
            ItemsSource="{Binding History}"
            ItemTapped="OnItemTapped"

            RowHeight="60">
            <ListView.ItemTemplate>
                <DataTemplate>
                    <ViewCell>
                        <StackLayout Margin="8">
                            <Label 
                                Text="{Binding MessageTitle}"
                                FontAttributes="Bold" />
                            <Label 
                                Text="{Binding MessageContents}" />
                        </StackLayout>
                    </ViewCell>
                </DataTemplate>
            </ListView.ItemTemplate>
        </ListView>

这是我尝试使用 .ScrollTo 的视图背后的部分代码

 private void ScrollToBottomClicked(object sender, EventArgs e)
    {
        List.ScrollTo(MyList.ItemsSource, ScrollToPosition.End, true);
    }

这里是 ItemSource,它是我的视图模型中的一个可观察集合

public ObservableCollection<HistoryMessage> History
    {
        get
        {
            return History;
        }
        set
        {
            History = value;
        }
    }

当单击 ScrollToBottom 按钮时,我希望列表视图显示跳转到最近添加的项目。任何帮助将不胜感激!

【问题讨论】:

    标签: c# xaml xamarin xamarin.forms


    【解决方案1】:

    例如:

    在我后面的代码中,我有以下方法,在我的情况下是无效的,因为我只在加载所有列表时调用

        public void ScrollDown(HistoryMessage historyMessage)
        {
            List.ScrollTo(historyMessage, ScrollToPosition.End, false);
        }
    

    所以,当我得到所有列表时,我调用这个方法

        ScrollDown(History.LastOrDefault());
    

    如果您有一个按钮,并且希望我向您显示列表中最接近的项目,您应该查询您的 API 以查看是否添加了任何元素,然后调用此方法并发送 lastOrDefault 元素。

    如果您想要的是第一个元素,您需要将 List.ScrollTo(historyMessage, ScrollToPosition.End, false) 更改为 List.ScrollTo(historyMessage, ScrollToPosition.Start, false) 并在您的可观察集合中发送第一个元素

    【讨论】:

      猜你喜欢
      • 2021-05-21
      • 2019-05-14
      • 1970-01-01
      • 2017-12-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多