我试图在ListBox中找到一些属性或方法,可以将ListBox设置为top(第一个项目将是listbox中的第一个项目)。我的意思是用户点击列表框并转到另一个页面,当他回去时,他会看到第一个项目的列表。可能吗?因为我找不到任何东西,当我尝试设置但我没有。我尝试将ItemsSource设置为null,然后再次将之前的内容ListBox放在我点击的位置。感谢
答案 0 :(得分:0)
当您导航到视图时,以下代码会滚动到第一个项目:
protected override void OnNavigatedTo(NavigationEventArgs e)
{
var firstListBoxItem = listBox.Items.FirstOrDefault();
if (firstListBoxItem != null) listBox.ScrollIntoView(firstListBoxItem);
}
您可以通过以下方式延长使用if(e.NavigationMode == NavigationMode.Back) { ... }
答案 1 :(得分:0)
在ScrollIntoView之前使用Updatelayout()属性:
protected override void OnNavigatedTo(NavigationEventArgs e)
{
var firstListBoxItem = listBox.Items.FirstOrDefault();
if (firstListBoxItem != null)
{
listBox.UpdateLayout();
listBox.ScrollIntoView(firstListBoxItem);
}
}
答案 2 :(得分:0)
可以通过以下方式实现:
在 Loaded
标记中添加 ListBox
属性,
<ListBox Background="WhiteSmoke" ItemsSource="{Binding files}" Name="listBox" SelectionChanged="listBoxClicked" Loaded="list_loaded">
使用它的事件处理程序,如下代码:
private void list_loaded(object sender, RoutedEventArgs e)
{
if (listBox != null && listBox.Items.Count > 0)
{
listBox.SelectedIndex = -1; //To remove selection
listBox.ScrollIntoView(listBox.Items[0]); //To scroll at top (first) item position
}
}
这应该有效。如有任何疑问,请告诉我。感谢。