如何在使用MVVM更改项目名称时重新排序我的列表框?
我的列表框绑定到一个Observable集合,该集合存储一个继承INotifyPropertyChanged的'People'类。列表框按属性“名称”排序,当我更改列表框中某个项目的“名称”值时,我可以看到它的值已更改,但列表框不会自动重新排序。
初始排序是通过CollectionViewSource
完成的 <CollectionViewSource x:Key="SortedItems" Source="{Binding PeopleList}">
<CollectionViewSource.SortDescriptions>
<scm:SortDescription PropertyName="Name"/>
</CollectionViewSource.SortDescriptions>
</CollectionViewSource>
并由Listbox使用如下
<ListBox ItemsSource="{Binding Source={StaticResource SortedItems}}"
SelectedItem="{Binding CurrentSelectedPerson}">
<ListBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Path=Name}"/>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
当我转到另一个页面并返回时,列表框具有正确的顺序,但是当我更改列表框不刷新的人的名称时。如何在保留MVVM的同时完成这项工作?
答案 0 :(得分:2)
这是一个已知的问题,我想还没有解决。尝试实现自定义的CollectionViewSource,如下面的链接所示
http://social.msdn.microsoft.com/Forums/en/wpf/thread/d7eda358-ca16-4164-8773-fd92527c7795
还要检查此帖子是否有替代
http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/cb7c5c62-7ca9-49b5-91a0-379581b1c1aa/
答案 1 :(得分:1)
This link讨论了这个问题 - 并提出了几个答案。