ListView关注列表中的最后一项? - Xamarin表格

时间:2017-06-18 22:56:53

标签: c# xaml listview xamarin xamarin.forms

有人可以告诉我如何将ListView焦点始终放在最后一个列表项上吗?按照WhatsApp中的对话示例,当我们发送消息时,刚刚到达的消息总是集中在......或者任何类似的解决方案?

我想要的是在ListView中插入某些内容时,而不是让“选项”上去查看下面的项目,我希望它是另一种方式。始终显示屏幕上的最后一项。

1 个答案:

答案 0 :(得分:1)

我创建了一个示例,其中有两个元素,一个列表视图和一个用于添加新元素的按钮。

这是我的XAML:

<Grid>
    <Grid.RowDefinitions>
        <RowDefinition Height="*" />
        <RowDefinition Height="4*" />
    </Grid.RowDefinitions>
    <ListView x:Name="ListView" />
    <Button
        Grid.Row="1"
        Clicked="Button_OnClicked"
        Text="Add animal" />
</Grid>

正如您所看到的,按钮非常大,以便更好地显示滚动。

在我的代码隐藏中,我使用ListView.ScrollTo方法滚动到最后添加的元素,包含动画:

public partial class MainPage : ContentPage
{
    private ObservableCollection<String> animals;
    private int _counter = 0;

    public MainPage()
    {
        InitializeComponent();
        animals = new ObservableCollection<string>(new List<string>{"dog","cat","fish","elephant","monkey"});
        ListView.ItemsSource = animals;
    }

    private void Button_OnClicked(object sender, EventArgs e)
    {
        var newElement = "new animal"+_counter;
        _counter++;
        animals.Add(newElement);
        ListView.ScrollTo(newElement, ScrollToPosition.End, true);
    }
}

我希望这可以帮到你。