在XAML中对DataGrid进行排序时,ColumnHeader箭头未反映

8

我有一个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>

数据表格已正确应用排序,但是数据表格上没有显示排序的指示。
查看后台代码中的视图时,我看到了集合中的SortDescriptions并尝试刷新视图,但它没有生效。
如何使列标题箭头在视图的SortDescription集合初始状态下正确反映状态?
更新:我找到了答案。我在数据表格中添加了DataGridTextColumn的SortDirection。这样就添加了列标题箭头。
<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" />

1
既然你已经找到了答案,最好将其发布为答案并标记为已接受(是的,在SO上你可以回答自己!) 这样,未来遇到你的问题的任何人都可以更容易地注意到它已经得到了解答。 - Mohammad
1个回答

3

根据OP的情况,他似乎不是常规访问者,因此在此之前,我将他的解决方案发布为答案:

DataGrid中的DataGridTextColumn上添加SortDirection即可。这将添加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" />

2
如果CollectionViewSource的 SortDescriptions 属性在代码中设置并且在运行时发生变化,则此方法无法正常工作。因此,设置一个固定的 SortDescription="Ascending" 是错误的,因为它不能反映当前的排序方式。 - Dai

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接