WPF DataGrid сортировка по умолчанию не работает
У меня есть DataGrid со столбцами XAML как таковыми:
<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" />
Я связываю это сObservableCollection<EalsLogEvent>
, гдеEalsLogEvent.Date
набраноDateTime
:
public ObservableCollection<EalsLogEvent> LogEvents
{
get
{
return _logEvents;
}
}
Модель обновления сетки использует таймер для обновления, и все выглядит нормально с сеткой, кроме тех случаев, когда она загружается впервые при запуске приложения. ТогдаTime
Столбец сортируется по убыванию, но сортируется по возрастанию.
Для правильной сортировки я должен дважды щелкнуть заголовок столбца; первый раз изменяет порядок на возрастающий, который теперь соответствует содержимому столбца. Второй щелчок по заголовку столбца изменяет порядок сортировки обратно на нисходящий, и на этот раз он сортирует содержимое столбца должным образом, то есть по убыванию.
Если я использую LINQ, чтобы заказать коллекцию, когда_logEvents
обновляясь, я теряю тот порядок, который пользователь установил для столбца, щелкая его заголовок. Если мне нужно, чтобы представление сообщило модели, в каком порядке следует использовать сортировку LINQ, что-то пахнет плохо.