我不知道标题是否表达我想要的东西。我在WPF中有一个ListBox,我生成了许多元素。当我在生成时单击一个元素时,我希望我的选定项目不会在列表中向下移动,所以我再也看不到它了,我想保持在我点击它的确切位置。
如果可以,有人可以在C#中指出如何做到这一点的想法吗?
感谢。
答案 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);
我以前从未尝试过这样做,所以可能产生或不产生预期的影响?