2016-09-20 82 views
2

我有一個TabControl有一個TabItemDataGrid裏面。DataGrid排序不起作用

<TabControl Background="{DynamicResource StandardBackgroundColor}" 
      Grid.Row="2" Grid.Column="1" 
      BorderBrush="{DynamicResource StandardBorderColor}" 
      DataContext="{Binding ChartViewModel}"> 


<TabItem Header="{lex:Loc Data}"> 
      <DataGrid Name="TagGrid" ItemsSource="{Binding UnionAllSerie}" 
        ColumnWidth="*" Background="#CCCCCC"> 
        <DataGrid.Columns> 
         <DataGridTextColumn Header="Name" Binding="{Binding Name}" /> 
         <DataGridTextColumn Header="{lex:Loc time}" SortDirection="Descending" 
              Binding="{Binding X, Converter={StaticResource OleDateToDateTimeConverter}, StringFormat=\{0:dd/MM/yy HH:mm\}}" /> 
         <DataGridTextColumn Header="{lex:Loc Measure}" 
              Binding="{Binding Y}" /> 
        </DataGrid.Columns> 
      </DataGrid> 
</TabItem> 

凡我UnionAllSerie聲明如下:

public ObservableCollection<Data> UnionAllSerie { get; set; } = new ObservableCollection<Data>(); 

數據的集合取決於在窗口上執行的操作填充。我想要的是Grid自動按表示日期的第二列進行排序。

有人知道我在做什麼錯誤或失蹤? 謝謝!

回答

1

在Datagrid列上設置SortDirection並不實際對列進行排序。 (有關詳細信息,請參見here)。

我會推薦使用一個CollectionViewSource,它具有爲您的目的而構建的功能。 結果應該是這個樣子:

<Window.Resources> 
    <CollectionViewSource x:Key="UnionAllSerieViewSource" Source="{Binding UnionAllSerie}"> 
     <CollectionViewSource.SortDescriptions> 
      <scm:SortDescription PropertyName="X" Direction="Descending"/> 
     </CollectionViewSource.SortDescriptions> 
    </CollectionViewSource> 
</Window.Resources> 
... 
<DataGrid Name="TagGrid" ItemsSource=""{Binding Source={StaticResource UnionAllSerieViewSource}}"" 
       ColumnWidth="*" Background="#CCCCCC"> 
      <DataGrid.Columns> 
       <DataGridTextColumn Header="Name" Binding="{Binding Name}" /> 
       <DataGridTextColumn Header="{lex:Loc time}" SortDirection="Descending" 
            Binding="{Binding X, Converter={StaticResource OleDateToDateTimeConverter}, StringFormat=\{0:dd/MM/yy HH:mm\}}" /> 
        <DataGridTextColumn Header="{lex:Loc Measure}" 
            Binding="{Binding Y}" /> 
      </DataGrid.Columns> 
</DataGrid> 

有關如何排序CollectionViewSources看到this msdn article更多信息。

+0

完美!它按要求工作!感謝您的文章。 –

+0

我很高興我可以幫助:)因爲它解決了你的問題,你會考慮接受這個答案嗎? – vkluge