Похоже, что Linq теперь является рекомендуемым способом, когда Sort и Filter стали AWOL.
Таким образом, вы можете принять что-то подобное в своей модели:
private MyDataSourceProvider dataSource;
private ObservableCollection<MyType> sortedDataBackingField;
public ObservableCollection<MyType> SortedData
{
get
{
return sortedDataBackingField;
}
set
{
sortedDataBackingField = value;
NotifyPropertyChanged("SortedData");
}
}
public void SortByName()
{
SortedData = new ObservableCollection<MyType>(dataSource.Entities.OrderBy(
entity => entity.Name));
}
public void SortByAge()
{
SortedData = new ObservableCollection<MyType>(dataSource.Entities.OrderBy(
entity => entity.Age));
}
Подключите SortByName и SortByAgeк вашему пользовательскому интерфейсу в шаблоне по вашему выбору и просто свяжите со свойством SortedData:
<ItemsControl ItemsSource=”{Binding SortedData}”/>
Edit: Применительно к переходам вы должны обнаружить, что этот подход вызовет AddDeleteThemeTransitionдля предметов, которые вы отсортировали;просто добавьте что-то вроде этого в ItemsControl:
<ItemsControl.ItemContainerTransitions>
<TransitionCollection>
<AddDeleteThemeTransition></AddDeleteThemeTransition>
</TransitionCollection>
</ItemsControl.ItemContainerTransitions>