WPF DataGrid-standardmäßig Sortieren funktioniert nicht

Ich habe ein DataGrid Spalten, in XAML wie folgt:

<DataGridTextColumn Header="Time" Binding="{Binding Date, StringFormat='yyyy-MM-dd  HH:mm:ss'}" SortMemberPath="Date" SortDirection="Descending" Width="130" CanUserResize="True" />
<DataGridTextColumn Header="Level" Binding="{Binding Level}" Width="60" CanUserResize="True" />
<DataGridTextColumn Header="Source" Binding="{Binding Logger}" Width="150" CanUserResize="True" />
<DataGridTextColumn Header="Message" Binding="{Binding Message}" Width="*" CanUserResize="True" />

Ich Binde dieses zu einem ObservableCollection<EalsLogEvent>, wo EalsLogEvent.Date eingegeben wird DateTime:

public ObservableCollection<EalsLogEvent> LogEvents 
{
    get
    {
        return _logEvents;
    }
}

Raster viewmodel verwendet einen timer, um selbst aktualisieren, und alles scheint in Ordnung mit dem Netz, außer beim ersten laden, auf app startup. Dann, die Time Spalte sortiert werden, absteigend, sondern aufsteigend sortiert ist.

Um die Art Recht hat, muss ich Sie auf die Spaltenüberschrift, zweimal; das erste mal, ändert sich die Reihenfolge aufsteigend, die nun mit dem Inhalt von der Spalte. Der zweite Klick auf die Spaltenüberschrift ändert seine Art, um wieder absteigend, und dieses mal ist es sortiert die Spalte Inhalt richtig, d.h. absteigend.

Wenn ich LINQ, um die Reihenfolge der Auflistung bei _logEvents aktualisiert, verliere ich welche, um den Benutzer gesetzt hatten, die Spalte durch klicken auf Ihren header. Wenn ich die anzeigen sagen, das Modell, das um die LINQ Sortieren Sie verwenden sollten, etwas riecht schlecht.

  • Haben Sie versucht, eine CollectionView für die Sortierung?
  • Ich glaube, ich hatte irgendwann den Weg zurück, aber werde wieder versuchen heute. Alle verfügbaren Referenzen sagen mir die DataGrid soll, um an seinen eigenen CollectionView oder einer seiner drei Derivate.
  • Wie kann ich ersetzen ObservableCollection mit jedem CollectionView oder deren Unterklassen, ListCollectionView und BindingListCollectionView wenn keine dieser generischen während ObservableCollection ist?
InformationsquelleAutor ProfK | 2015-03-11
Schreibe einen Kommentar