列表框项目在选择后保持专注

时间:2011-07-14 20:08:33

标签: c# wpf

我不知道标题是否表达我想要的东西。我在WPF中有一个ListBox,我生成了许多元素。当我在生成时单击一个元素时,我希望我的选定项目不会在列表中向下移动,所以我再也看不到它了,我想保持在我点击它的确切位置。

如果可以,有人可以在C#中指出如何做到这一点的想法吗?

感谢。

2 个答案:

答案 0 :(得分:2)

假设这是一个好主意,并且您正在使用winforms

第1步:

确定源中所选项目的索引。

第2步:

当您向ListBox添加项目时,在该项目之前插入项目的索引处将ListBox拆分为public void PutTheItemInTheSameSpot() { var listboxitems = (List<Integer>)YourListBox.DataSource; var originalClikedItem = OriginalItem; var topPart = new List<Integer>(); for (i = 0; i < itemPosition; i++) { topPart.Add(listboxItems[i]); } topPart.Add(originalClickedItem); var bottomPart = listboxitems.Remove(toppart); YourListBox.DataSource = toppart.AddRange(bottomPart); } ,然后添加其余项目,同时确保您如果项目现在在列表中的其他位置,则已删除该项目。

代码:

//假设您知道如何在单击项目时获取项目的位置并保存 //项目到名为OriginalItem的变量

{{1}}

看到你的编辑是WPF

可能会有想法。

答案 1 :(得分:2)

只是一个想法:只要项目被添加到ListBox,您就可以尝试让视图响应事件。在事件处理程序中,您可以强制所选项目滚动到视图中,可能会将其保持在当前“可查看”位置:

listBox.ScrollIntoView(listBox.SelectedItem);

我以前从未尝试过这样做,所以可能产生或不产生预期的影响?