gpt4 book ai didi

c# - Wpf DataGrid(德语)日期排序

转载 作者:太空宇宙 更新时间:2023-11-03 19:48:42 31 4
gpt4 key购买 nike

我正在寻找一种(最好是仅限 XAML)解决方案,以按以 dd.MM.yyyy 格式显示日期值的列对 WPF DataGrid 进行自动排序。 DataGridItemSource 是一个 DataTable,它是从 XML 字符串中读取的。

我已经拥有的代码似乎不起作用,但是,如果我设置例如SortDirection="Ascending"在显示整数的列上,它确实有效。我遗漏了与我的问题无关的所有代码。

我希望你能帮助我,在此先感谢。

<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>

编辑:

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>

编辑#2:

我现在没有试图找到一个(显然相当困难的)纯 Xaml 解决方案,而是直接在 MySQL 中从我获取它的地方对 DataTable 进行排序。事实证明,这是一种更简单、更快速的解决方案。

最佳答案

您可以绑定(bind)到 CollectionViewSource,而不是绑定(bind)到 DataView,它默认按 Date 属性对 View 进行排序:

<Window x:Class="WpfApplication1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:scm="clr-namespace:System.ComponentModel;assembly=WindowsBase"
mc:Ignorable="d"
Title="MainWindow" Height="300" Width="300">
<Window.Resources>
<CollectionViewSource x:Key="cvs" Source="{Binding MyDataTable}">
<CollectionViewSource.SortDescriptions>
<scm:SortDescription PropertyName="Date" Direction="Ascending" />
</CollectionViewSource.SortDescriptions>
</CollectionViewSource>
</Window.Resources>
<Grid>
<DataGrid IsReadOnly="True"
ItemsSource="{Binding Source={StaticResource cvs}}"
AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridTextColumn Header="Date" Binding="{Binding Date, StringFormat='{}{0:dd.MM.yyyy}'}" />
</DataGrid.Columns>
</DataGrid>
</Grid>
</Window>

关于c# - Wpf DataGrid(德语)日期排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42372046/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com