31 votes

Création d'une vue de collection triée dans WinRT

Quelqu'un a eu un aller à la création d'un point de vue qui trie une collection? L'interface ICollectionView est présent, et il prétend avoir les mêmes responsabilités que son WPF / SL homologue (tri, la pagination, le filtrage), cependant, sauf si j'ai raté quelque chose, il n'y a pas de tri méthodes / propriétés sur l'interface.

Je serais intéressé de savoir comment prendre une collection d'éléments puis de les trier via un point de vue dans WinRT.

Remarque, je sais que je peux le faire manuellement, cependant, je veux voir comment une collection triée interagit avec le WinRT thème des transitions qui apparaissent pour ajouter des effets visuels lorsque le tri est effectué.

4voto

Tawnos Points 1556

Malheureusement, le tri d'une vue de collection dans Win8 n'est pas pris en charge (ni par filtrage ni par regroupement). La seule façon de procéder consiste à manipuler directement la source de données, puis à l'affecter à la propriété Source.

Cela a été discuté comme une amélioration pour la période post-Win8. J'aimerais avoir de meilleures nouvelles :)

2voto

Duncan Points 29

Linq semble être la manière suggérée maintenant de Tri et de Filtre allé AWOL.

Donc, vous pourriez adopter quelque chose comme ceci dans votre modèle:

    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));
    }

Crochet SortByName et SortByAge jusqu'à votre INTERFACE utilisateur dans le motif de votre choix, et tout simplement se lier à la SortedData propriété:

<ItemsControl ItemsSource="{Binding SortedData}"/>

Edit: Avec référence aux transitions, vous devriez trouver que cette approche va déclencher l'AddDeleteThemeTransition pour les éléments que vous avez trié; il suffit d'ajouter quelque chose comme ceci à l'intérieur de la ItemsControl:

<ItemsControl.ItemContainerTransitions>
    <TransitionCollection>
        <AddDeleteThemeTransition></AddDeleteThemeTransition>
    </TransitionCollection>
</ItemsControl.ItemContainerTransitions>

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X