PagedCollectionView пользовательская сортировка - PullRequest
2 голосов
/ 19 ноября 2011

Можно ли настроить сортировку в PagedCollectionView в Silverlight4? Мне кажется, что у меня есть возможность сортировать эти коллекции по заданному свойству. Я также могу установить, хочу ли я сортировать коллекцию по возрастанию или по убыванию. Однако я не вижу возможности установить пользовательскую сортировку - с использованием какого-либо компаратора или чего-то подобного.

Так можно реализовать простейшую сортировку

PlayerPagedCollection = new PagedCollectionView();
PlayerPagedCollection.SortDescriptions.Clear();
PlayerPagedCollection.SortDescriptions.Add(new System.ComponentModel.SortDescription("Name",ListSortDirection.Ascending)); 

Можно ли как-то установить пользовательскую сортировку ?? Мне нужно, чтобы он работал на Silverlight4

1 Ответ

0 голосов
/ 17 мая 2012

Дополнительная сложность не идеальна, но это работает для меня.

public class YourViewModel
{
    private YourDomainContext context;
    private IOrderedEnumerable<Person> people;
    private PagedCollectionView view;
    private PersonComparer personComparer;

    public YourViewModel()
    {
        context = new YourDomainContext();
        personComparer = new PersonComparer()
        {
            Direction = ListSortDirection.Ascending
        };
        people = context.People.OrderBy(p => p, personComparer);
        view = new PagedCollectionView(people);
    }

    public void Sort()
    {
        using (view.DeferRefresh())
        {
            personComparer.Direction = ListSortDirection.Ascending;

            //this triggers the IOrderedEnumerable to resort
            FlightTurnaroundProcessesView.SortDescriptions.Clear();
        }
    }
}

public class PersonComparer : IComparer<Person>
{
    public ListSortDirection Direction { get; set; }

    public int Compare(Person x, Person y)
    {
        //add any custom sorting here
        return x.CompareTo(y) * GetDirection();
    }

    private int GetDirection()
    {
        return Direction == ListSortDirection.Ascending ? 1 : -1;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...