繁体   English   中英

如何在C#/ Xamarin中使用“ .ScrollTo”列表视图方法

[英]How to use the “.ScrollTo” list view method in C#/Xamarin

我试图弄清楚如何使用列表视图可用的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按钮时,我希望列表视图显示跳转添加的最新项目。 任何帮助将不胜感激!

例如:

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

    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),然后从可观察集合中发送第一个元素

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM