gpt4 book ai didi

c# - 添加项目时卡住列表框项目

转载 作者:可可西里 更新时间:2023-11-01 09:15:56 26 4
gpt4 key购买 nike

我们有一个包含多个项目的列表框。项目通过 ObservableCollection 插入到 ListBox 中。其中一些项目可以直接在列表框中进行编辑。但是,如果在索引 < 已编辑项的索引处添加项,则列表框的全部内容会向下移动。

我们想要做的是:如果一个项目处于编辑模式,我们想卡住它在屏幕上的位置。如果将项目添加到集合中并且项目周围的 UI 发生变化,这很好。但是项目的位置在屏幕上应该保持不变。

到目前为止,我唯一能做的就是附加到 ScrollChanged 事件,最多使用 BringIntoView 或 ScrollIntoView 方法来确保该项目始终显示在 UI 中的某个位置,但我无法锁定其位置。

有没有人做过这样的事情并提供帮助?

最佳答案

我认为以下方法可以解决您的问题:

  1. 进入编辑模式时,保留对您正在编辑的对象的引用、它在列表框中的索引和 ScrollViewer 的 Horizo​​ntalOffset。

  2. 在 ObservableCollection.CollectionChanged 事件的处理程序中,找到您正在编辑的对象的新索引,如果索引发生变化,则将已编辑的项目与现在取代它的项目交换(或其他一些逻辑,如果你想保持一定的顺序)。然后,如果 ScrollViewer.Horizo​​ntalOffset 发生变化,将其移回上述偏移量。

这将确保您正在编辑的项目始终位于列表和 UI 中的完全相同的位置。

希望这对你有帮助。

关于c# - 添加项目时卡住列表框项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2428920/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com