Как использовать метод представления списка «.ScrollTo» в C # / Xamarin - PullRequest
0 голосов
/ 06 июня 2018

Я пытаюсь выяснить, как использовать метод 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, я хочу, чтобы на экране представления списка отображался последний элемент.добавлено.Любая помощь будет принята с благодарностью!

1 Ответ

0 голосов
/ 06 июня 2018

Например:

В моем коде ниже у меня есть следующий метод, в моем случае void, потому что я вызываю только тогда, когда я загружаю весь список

    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) и отправил первый элемент в вашу наблюдаемую коллекцию

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...