Listbox中是否存在模板逆序?我正在使用ObservableCollection,我想避免任何额外的排序,插入等。
答案 0 :(得分:4)
如果您已经有一个不想更改的ObservableCollection,我可能会使用CollectionViewSource类。您可以直接在XAML中执行此操作:
...
xmlns:scm="clr-namespace:System.ComponentModel;assembly=WindowsBase"
...
<UserControl.Resources>
<CollectionViewSource x:Key="cvs" Source="{Binding}">
<CollectionViewSource.SortDescriptions>
<scm:SortDescription PropertyName="TheProperty" Direction="Descending" />
</CollectionViewSource.SortDescriptions>
</CollectionViewSource>
</UserControl.Resources>
<ListBox ItemsSource={Binding Source={StaticResource cvs}}" />
答案 1 :(得分:2)
如果你使用Linq,你应该只能.OrderByDescending()?看一下这里的例子 - http://msdn.microsoft.com/en-us/vcsharp/aa336756.aspx
如果这是您在上一个问题中处理的分数列表,那么您应该能够按分数金额排序,如果它存储为整数,而无需创建自定义比较器功能。订购列表的示例linq查询类似于:
var sortedItems =
from item in myObservableCollection
orderby item.Score descending
select item;
获得Linq的IEnumerable结果后,您可以重新创建一个ObservableCollection并重新分配给您的ViewModel(Cast LINQ result to ObservableCollection)