【发布时间】:2014-03-08 09:16:24
【问题描述】:
我有一个 XML 文件中的数据,该文件显示在 dataGrid 中。 (WPF、C#、VisualStudio 2013)其中一列是数值数据。当我对列进行排序时,它似乎将其转换为 alpha 而不是数字,尽管我试图将该列指定为数字......
数据网格的 XAML:
<DataGrid
ItemsSource="{Binding Path=Elements[Record]}"
AutoGenerateColumns="False" Height="Auto"
Name="dataGridRank"
VerticalAlignment="Top" HorizontalAlignment="Stretch">
<DataGrid.Columns>
<DataGridTextColumn
Header="Name"
Width="*"
Binding="{Binding Element[Name].Value}"/>
<DataGridTextColumn
Header="Rank"
Width="*"
Binding="{Binding Element[Rank].Value, StringFormat={}{0:N}}"/>
</DataGrid.Columns>
</DataGrid>
XML 文件“ranks.xml”:
<Ranks xmlns:dt="urn:schemas-microsoft-com:datatypes">
<Record>
<Name> A </Name>
<Rank dt:dt="number"> 85 </Rank>
</Record>
<Record>
<Name> C </Name>
<Rank dt:dt="number"> 105 </Rank>
</Record>
<Record>
<Name> B </Name>
<Rank dt:dt="number"> 95</Rank>
</Record>
</Ranks>
加载xml文件的C#代码:
var xml = XDocument.Load("Resources/ranks.xml").Root;
dataGridRanks.DataContext = xml;
当我点击列标题对Rank进行排序时,我想要的是:
A 85
B 95
C 105
or
C 105
B 95
A 85
我得到了什么:
C 105
A 85
B 95
or
B 95
A 85
C 105
我尝试使用和不使用 Stringformat 或 dt:dt="number" 均未成功。我试过 Stringformat=N 以及 StringFormat={}{0:N}。
我错过了什么?看来这应该很简单……
【问题讨论】:
标签: c# xml wpf sorting wpfdatagrid