【发布时间】:2012-02-16 06:55:15
【问题描述】:
在 WPF 中,我有一个包含几列的 DataGrid。
默认情况下,我想让它排序为 1,但我就是找不到如何做到这一点。
XAML 中的 DataGrid 如下所示:
<DataGrid x:Name="LibraryView" ItemsSource="{Binding Path=Elements[Persons]}" IsReadOnly="True" LoadingRow="dg_LoadingRow">
<DataGrid.Columns>
<DataGridTextColumn Header="Name" Binding="{Binding Path=Element[Name].Value}" IsReadOnly="True" />
<DataGridTextColumn Header="Score" Binding="{Binding Path=Element[Score].Value}" IsReadOnly="True" />
<DataGridTextColumn Header="Date" Binding="{Binding Path=Element[Date].Value}" IsReadOnly="True" />
</DataGrid.Columns>
</DataGrid>
而它背后的唯一代码是:
public ScoreBoard()
{
InitializeComponent();
DataSet ds = dweMethods.DecryptAndDeserialize("ScoreData.xml");
XElement TrackList = XElement.Parse(ds.GetXml());
LibraryView.DataContext = TrackList;
}
我只是找不到如何使其默认按“分数”列排序。
谁能帮我指出正确的方向?
【问题讨论】:
-
看看 CollectionViewSource。
-
我已经尝试过这个:
ICollectionView view = CollectionViewSource.GetDefaultView(dataGrid1.ItemsSource); view.SortDescriptions.Clear(); view.SortDescriptions.Add(new SortDescription("LastName", ListSortDirection.Ascending)); view.Refresh();但这似乎不适用于我上面的代码,我不知道也不明白我应该怎么做才能让它工作 -
您是否考虑过对您的 TrackList 子项进行排序?
-
uuh,问题是,我现在只有 3 周深入 c#,呵呵,所以我还需要学习一些东西。所以也许我没有以正确的方式设置数据网格以便现在能够使用排序?
-
Darjan 的解决方案成功了吗?对 XElement 进行排序非常简单——看看 XLINQ Sort。