2013-12-12 148 views
0

我想获得一个WPF DataGrid按列默认排序,它不工作。没有排序发生。排序图标出现,如果我点击它们,然后排序发生。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> 
+0

尝试将DataGridTemplateColumn的'SortDirection'属性设置为“升序”或“降序” – Rachel

回答

0

一个解决方案是使用LINQ查询为已经排序的数据提供DataGrid。用下面这样的方法修改物品来源的吸气剂:

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

那么它肯定会按照Ordinal排序。

+0

使用此方法时,排序指示符不会显示在列标题中。 – slugster

+0

我希望避免这种情况,并在网格中做,但我认为这是我最好的选择。谢谢!我仍然会对列进行排序,只是在最初排序 – twaldron