设置列表框的SelectedIndex出现在屏幕顶部

时间:2014-01-31 05:55:16

标签: c# windows-phone-8

我将列表框绑定到一个集合。我正在使用selectedIndex来更改列表框项的选定索引,但这对我来说无法在屏幕顶部设置所选索引。我的列表框包含100多个项目。

lsbReadingChapter.SelectedIndex = Convert.ToByte(App.Recent.AyaID);
lsbReadingChapter.ScrollIntoView(lsbReadingChapter.SelectedIndex);

我希望每次在列表框中选择新项目时,所选项目应始终显示在屏幕顶部,是否可以在列表框中执行此操作?

谢谢!

3 个答案:

答案 0 :(得分:0)

使用此功能可以帮助您:

lsbReadingChapter.SelectedIndex = Convert.ToByte(App.Recent.AyaID);
lsbReadingChapter.UpdateLayout();
lsbReadingChapter.ScrollIntoView(lsbReadingChapter.SelectedIndex);

答案 1 :(得分:0)

是的,你可以做到。您需要在选择更改中获取所选项目并在该项目的第一个索引中插入该项目(列表框项目源)并从之前的索引中删除所选项目,然后再将ListBox itemSource更改为新源。 试试这个

//Create your listBox itemsource
List<chapter> lstChapter = new List<chapter> lstChapter();
lstChapter.Add(new chapter());
lstChapter.Add(new chapter());
lstChapter.Add(new chapter());
lstChapter.Add(new chapter());

//Assign itemSource to listBox
lsbReadingChapter.ItemSource = lstChapter ;

//Get selected Item of listBox
chapter selectedItem= lsbReadingChapter.SelectedItem.
//get index of selected item
int previousIndex = lstChapter.IndexOf(selectedItem);
//Remove item from that index
lstChapter=lstChapter.RemoveAt(previousIndex);
//insert selected item in first index
 lstChapter.Insert(0, selectedItem);
//Reassign your listbox itemSource
lsbReadingChapter.ItemSource = lstChapter ;

答案 2 :(得分:0)

您可以拨打ScrollIntoView()两次 - 例如:

lsbReadingChapter.SelectedIndex = Convert.ToByte(App.Recent.AyaID);
//First scroll to the bottom of the list
lsbReadingChapter.ScrollIntoView(lsbReadingChapter.Items[lsbReadingChapter.Items.Count - 1]);
lsbReadingChapter.UpdateLayout();
//Then scroll to the selected index
lsbReadingChapter.ScrollIntoView(lsbReadingChapter.SelectedItem);
lsbReadingChapter.UpdateLayout();