当前位置: 首页 > 编程语言 > C#

ObservableCollection的逆序分享

时间:2023-04-11 00:11:25 C#

ObservableCollection的逆序我有一个包含自定义对象的ObservableCollection。通常项目添加在列表的末尾我在寻找什么:这个ObservableColection包含Button对象(自定义样式)。这些按钮显示在ListBox和StackPanel中,采用水平布局(因此按钮可以很好地彼此放在后面)。问题:创建的每个按钮都会收到一个DateTime。新添加的按钮总是有一个更新日期,后面跟着上一个按钮。所有计算都在计时器内进行(目前每秒运行一次)。所以我这次基本上是排序,但是突然按下3个按钮后,按钮都放在了右手边(而不是左手边)。例如:Btn3:14:15:45(True)Btn4:14:16:00(False)Btn2:14:15:32(True)Btn1:14:04:17(True)每次都会正确列表的开头添加前3个按钮。突然第四个项目被添加到第二个位置。好像不总是比较时间?每次创建按钮时,都会调用CollectionViewSource方法。CollectionViewSource有问题还是有更好的方法来处理它?对于笑容,您会尝试在XAML中进行排序吗?我知道名字不一样,但这是来自工作代码。我没有按日期排序,但我已经从DocProps中添加和删除了数百次,并且排序没有中断。我的另一个想法是它可能正在对日期的字符串表示形式进行排序并弄错了。也许创建一个索引001-00n用于排序。我在系列中添加了一个日期并且它起作用了。但必须使日期成为可排序的格式。Text="{BindingPath=Date,Mode=OneWay,StringFormat={}{0:s}}"如果我??理解得很好,我会使用DateTime的Ticks属性进行排序,因为它非常精确,而且cource是一个简单的数字.您的ICollectionView是实例字段还是代码片段中的局部变量?它必须是一个实例字段,然后您的排序才会起作用。顺便说一句,我试过你的代码片段并将iCollectionView更改为一个字段并且它有效。如果您点击评论中发布的Siva链接并点击其中的其他链接,您将最终到达http://connect.microsoft.com/VisualStudio/feedback/details/592897/collectionviewsource-sorting-only-the-有人发布了一个解决方法,它是第一次绑定到源代码。此解决方法是为DataGrid编写的,但您可以根据您使用的任何控件对其进行调整:GregBachraty发表2011年2月28日上午6:50实施您自己的DataGrid:publicclassSDataGrid:DataGrid{staticSDataGrid(){.ItemsSourceProperty.OverrideMetadata(typeof(SDataGrid),newFrameworkPropertyMetadata((PropertyChangedCallback)null,(CoerceValueCallback)null));在当前实现中强制回调的唯一方法是清除排序描述。您可以通过覆盖元数据来简单地“剪切”此代码。在Silverlight上不可行:OverrideMetadataAPI不公开。尽管我不确定Silverlight是否受此错误影响。其他风险和副作用可能适用。以上就是C#学习教程:ObservableCollection倒序分享的全部内容。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右边联系管理员删除。如需转载请注明出处: