【发布时间】:2012-05-02 12:14:34
【问题描述】:
我有包含自定义对象的ObservableCollection。
通常项目会添加到列表的末尾
我在寻找什么:
- 从列表的开头添加项目。
- 这可能只显示在 UI 中,我的整个程序已经在使用此列表中的数据位置。所以里面的对象可能不会在后面的代码中改变顺序。
这个ObservableColection 包含Button 对象(自定义样式)。这些按钮以水平布局显示在 ListBox 和 StackPanel 内(因此按钮可以很好地相互放置)。
问题:
创建的每个按钮都会收到一个DateTime。新添加的按钮的日期总是比之前的按钮更新。 所有的计算都在计时器内进行(目前每秒运行一次)。
所以我这次基本上是在排序,但是在像 3 个按钮之后突然一个按钮被放置在右侧(而不是左侧)。
例如:
Btn3: 14:15:45(正确) Btn4: 14:16:00(错误) Btn2: 14:15:32(正确) Btn1: 14:04:17(正确)
前 3 个按钮每次都会正确添加到列表的开头。突然间,第四项被添加到第二位。好像不是一直在比较时间?每次创建按钮时,都会调用 CollectionViewSource 方法。
CollectionViewSource 有问题还是有更好的处理方法?
【问题讨论】:
-
您是按时间顺序按升序还是降序排序?
-
降序如代码示例所示。但它并没有给出稳定的结果。首先它以正确的顺序添加,然后在 3 个按钮之后它开始添加完全错误的项目。
-
尝试使用
Insert()方法而不是Add()并在索引0 处添加新项目怎么样? -
我不能这样做,因为我的计算取决于项目的顺序(在我的问题中以粗体显示)。
标签: c# wpf observablecollection