【问题标题】:ColumnHeader arrows not reflected when sorting a DataGrid in XAML在 XAML 中对 DataGrid 进行排序时未反映 ColumnHeader 箭头
【发布时间】:2011-10-12 20:10:07
【问题描述】:

我有一个 DataGrid,它在 XAML 中定义了一些排序,如下所示:

<CollectionViewSource x:Key="DefaultSort" Source="{Binding SearchResults}">
    <CollectionViewSource.SortDescriptions>
        <scm:SortDescription PropertyName="ExternalOrgNo" Direction="Ascending"/>
        <scm:SortDescription PropertyName="ExternalBranchNumber" Direction="Ascending"/>
    </CollectionViewSource.SortDescriptions>
</CollectionViewSource>

排序已正确应用于 DataGrid,但网格上没有排序指示。

查看后面代码中的视图,我看到了集合中的 SortDescriptions,我尝试刷新视图,但没有奏效。

如何让 ColumnHeader 箭头正确反映视图的 SortDescription 集合的初始状态?

更新:我找到了答案。我将 SortDirection 添加到 DataGrid 中的 DataGridTextColumn。这添加了 ColumnHeader 箭头。

<DataGridTextColumn Header="Ext Firm #" Binding="{Binding ExternalOrgNo}" DisplayIndex="4" SortDirection="Ascending" Visibility="Visible" />
<DataGridTextColumn Header="Ext Branch #" Binding="{Binding ExternalBranchNumber}" DisplayIndex="5" SortDirection="Ascending" Visibility="Visible" />

【问题讨论】:

  • 当您找到答案后,最好将其发布为答案并将其标记为已接受(是的,您可以自己回答!)这样以后遇到您问题的任何人可以更容易地注意到它的回答。

标签: .net sorting wpfdatagrid


【解决方案1】:

OP 看起来不像是常客,所以直到那一刻我才发布他的解决方案作为答案:

SortDirection 添加到DataGrid 中的DataGridTextColumn。这添加了ColumnHeader 箭头。

<DataGridTextColumn Header="Ext Firm #" 
                    Binding="{Binding ExternalOrgNo}" 
                    DisplayIndex="4" 
                    SortDirection="Ascending" 
                    Visibility="Visible" />
<DataGridTextColumn Header="Ext Branch #" 
                    Binding="{Binding ExternalBranchNumber}" 
                    DisplayIndex="5" 
                    SortDirection="Ascending" 
                    Visibility="Visible" />

【讨论】:

  • 如果 CollectionViewSource 的 SortDescriptions 属性在代码中设置并在运行时变化,则此方法不起作用,因此设置常量 SortDescription="Ascending" 将是错误的,因为它不会反映当前排序。
猜你喜欢
  • 2017-06-09
  • 1970-01-01
  • 2015-12-25
  • 2017-08-25
  • 2011-12-24
  • 1970-01-01
  • 2012-11-07
  • 1970-01-01
  • 2014-12-12
相关资源
最近更新 更多