Lier à une triés ObservableCollection<T> dans une ListBox

J'ai une liste d'objets de données dans mon application Windows Phone 7 appelé MyObjectList, qui hérite ObservableCollection<MyObject>. Je garde la liste en mémoire dans une propriété publique de App appelé MyObjects. Mon objectif est de lier les données à un ListBox et les ont triés par MyObject.Name.

Actuellement, j'ai un ListBox en XAML avec le nom MyObjectsList et le code suivant dans le constructeur de lien:

public MyObjectListView()
{
    InitializeComponent();
    this.MyObjectsList.ItemsSource = ((App)App.Current).MyObjects;
}

Cela fonctionne très bien. - Je ajouter des articles à MyObjects et ils apparaissent dans la ListBox. Cependant, les données ne sont pas triées par nom lorsqu'il apparaît dans la liste. J'ai essayé la modification suivante pour obtenir les données à trier:

this.MyObjectsList.ItemsSource = ((App)App.Current).MyObjects
                                         .OrderBy(x => x.Name)

Mais quand je fais ça, je ne vois pas tout objets reflétés dans le ListBox triés ou autrement.

Que puis-je faire pour que lorsque je ajouter un article à mon ObservableCollection, il se présente triés par .Name dans le ListBox?

À l'aide de Linq sur un ItemsSource de désactiver le 'Observables' bit de l'ObservableCollection

OriginalL'auteur Ben McCormack | 2010-08-24