Я ищу (предпочтительно XAML) решение для автоматической сортировки WPF DataGrid
столбцом, который отображает значения даты в формате dd.MM.yyyy
. DataGrid
s ItemSource
- это DataTable
, который считывается из XML-строки.Wpf DataGrid (немецкий) Дата Сортировка
Код, который у меня уже есть, кажется, не работает, однако, если я установил, например. SortDirection = "Ascending" в столбце, который отображает ints, он работает. Я оставил все в кодексе, что не имеет отношения к моему вопросу.
Надеюсь, вы можете мне помочь, спасибо заранее.
<DataGrid IsReadOnly="True"
ItemsSource="{Binding Path=MyDataTable}"
AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridTextColumn Header="Date" Binding="{Binding Date, StringFormat='{}{0:dd.MM.yyyy}'}" SortDirection="Ascending"/>
</DataGrid.Columns>
</DataGrid>
Edit:
DataTable
десериализируется по методу DataTable.ReadFromXml()
из следующей строки:
<DataTable
xmlns=\"http://schemas.datacontract.org/2004/07/System.Data\">
<xs:schema id=\"NewDataSet\"
xmlns:xs=\"http://www.w3.org/2001/XMLSchema\"
xmlns=\"\"
xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">
<xs:element name=\"NewDataSet\" msdata:IsDataSet=\"true\" msdata:MainDataTable=\"ResultTable\" msdata:UseCurrentLocale=\"true\">
<xs:complexType>
<xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">
<xs:element name=\"ResultTable\">
<xs:complexType>
<xs:sequence>
<xs:element name=\"Date\" type=\"xs:dateTime\" minOccurs=\"0\"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:choice>
</xs:complexType>
</xs:element>
</xs:schema>
<diffgr:diffgram
xmlns:diffgr=\"urn:schemas-microsoft-com:xml-diffgram-v1\"
xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">
<DocumentElement
xmlns=\"\">
<ResultTable diffgr:id=\"ResultTable1\" msdata:rowOrder=\"0\">
<Date>2017-03-11T00:00:00+01:00</Date>
</ResultTable>
<ResultTable diffgr:id=\"ResultTable2\" msdata:rowOrder=\"0\">
<Date>2017-22-11T00:00:00+01:00</Date>
</ResultTable>
<ResultTable diffgr:id=\"ResultTable3\" msdata:rowOrder=\"0\">
<Date>2017-03-11T00:00:00+01:00</Date>
</ResultTable>
</DocumentElement>
</diffgr:diffgram>
</DataTable>
Edit # 2:
Вместо того, чтобы пытаться найти (по-видимому, довольно сложно) Решение Xaml-Only, теперь я сортирую DataTable непосредственно в MySQL, откуда я его извлекаю. Это является более простым и быстрым решением.
Должен ли пользователь иметь возможность сортировать столбцы, нажимая на них или вы можете просто сортировать код позади? – apc
После большего изучения я думаю, что это, вероятно, из-за строкового формата в привязке, заставляющего его сортировать как результирующую строку. Можете ли вы попробовать использовать формат yyyy-MM-dd, чтобы узнать, работает ли это. – apc
Является ли 'Date' DateTime или строкой? IIRC, столбец DateTime по умолчанию сортируется по базовому дате DateTime, а не по отображаемым данным. – Kilazur