我试图弄清楚如何使用列表视图可用的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按钮时,我希望列表视图显示跳转添加的最新项目。任何帮助将不胜感激!
答案 0 :(得分:0)
例如:
在我的代码后面我有以下方法,在我的情况下是无效的,因为我只在我加载所有列表时调用
public void ScrollDown(HistoryMessage historyMessage)
{
List.ScrollTo(historyMessage, ScrollToPosition.End, false);
}
所以,当我得到所有列表时,我称之为
ScrollDown(History.LastOrDefault());
如果您有一个按钮并且您希望我向您显示列表中最接近的项目,您应该查询您的API以查看是否添加了任何元素,然后调用此方法并发送lastOrDefault元素。 / p>
如果您想要的是第一个元素,则需要将List.ScrollTo(historyMessage,ScrollToPosition.End,false)更改为List.ScrollTo(historyMessage,ScrollToPosition.Start,false)并在您的observable集合中发送de first元素