WPF数据网格未排序

WPF数据网格未排序,wpf,wpfdatagrid,Wpf,Wpfdatagrid,我试图让WPF DataGrid在默认情况下按列排序,但它不起作用。没有排序发生。出现排序图标,如果我单击它们,则进行排序 现在我的表只有一列。但它仍然没有默认排序 你知道我遗漏了什么吗 <DataGrid.Columns> <!--Ordinal--> <DataGridTemplateColumn d:DataContext="{d:DesignInstance tabViewModels:ColumnVi

我试图让WPF DataGrid在默认情况下按列排序,但它不起作用。没有排序发生。出现排序图标,如果我单击它们,则进行排序

现在我的表只有一列。但它仍然没有默认排序

你知道我遗漏了什么吗

    <DataGrid.Columns>
            <!--Ordinal-->
            <DataGridTemplateColumn d:DataContext="{d:DesignInstance tabViewModels:ColumnViewModel}"
                                                            SortMemberPath="Ordinal"
                           >
                <DataGridTemplateColumn.HeaderTemplate>
                    <DataTemplate>
                        <Label Content="#" ToolTip="Column Position" />
                    </DataTemplate>
                </DataGridTemplateColumn.HeaderTemplate>
                <DataGridTemplateColumn.CellEditingTemplate>
                    <DataTemplate>
                        <xctk:DoubleUpDown Value="{Binding Ordinal, UpdateSourceTrigger=PropertyChanged, TargetNullValue=''}" />
                    </DataTemplate>
                </DataGridTemplateColumn.CellEditingTemplate>
                <DataGridTemplateColumn.CellTemplate>
                    <DataTemplate>
                        <TextBlock Text="{Binding Ordinal}" />
                    </DataTemplate>
                </DataGridTemplateColumn.CellTemplate>
            </DataGridTemplateColumn>
    </DataGrid.Columns>
    </DataGrid>

一种解决方案是使用LINQ查询将已排序的数据提供给DataGrid。使用如下内容修改项目源的getter:

List<Something> MyItemSource
{
    get
    {
        return _myItemSource.OrderBy(x => x.Ordinal).ToList();
    }
}
列出MyItemSource
{
得到
{
return _myItemSource.OrderBy(x=>x.Ordinal.ToList();
}
}

然后它肯定会按顺序排序。

尝试将
DataGridTemplateColumn
上的
SortDirection
属性设置为“升序”或“降序”。使用这种方法,排序指示器不会显示在列标题中。我希望避免这种情况,并在网格中执行,但我确实认为这是我的最佳选择。谢谢我仍然会将排序保留在列上,只是先对其进行排序