【发布时间】:2011-04-21 01:22:19
【问题描述】:
我正在尝试使用 MVVM 设计模式实现我的第一个 WPF 应用程序。
我创建了一个数据绑定到 ObservableCollection 的应用程序。应用程序呈现良好,但我希望数据网格在单击列标题时重新排序行。
我研究过这样的帖子: 数据源必须实现 IEnumerable,我的确实如此。 我需要设置 CanUserSortColumns 和/或 CanUserSort(在每一列上),我做到了。 我可以通过指定排序回调函数来实现自定义排序,我做到了。
这些似乎都没有帮助。在调试器中,我的 _customerGrid_Sorting 函数永远不会被调用,并且单击列标题没有任何效果。
我是否遗漏了后面的 XAML 中的某些内容?我需要实现另一个接口吗?我现在感觉很失落,所以非常感谢任何帮助。
XAML:
<DataGrid Name="_customerGrid"
AutoGenerateColumns="False"
CanUserSortColumns="True"
ColumnHeaderStyle="{StaticResource columnHeaderStyle}"
HorizontalAlignment="Left"
ItemsSource="{Binding Path=AllCustomers}"
RowDetailsVisibilityMode="VisibleWhenSelected"
RowStyle="{StaticResource DataGridRowStyle}"
SelectionUnit="FullRow"
Sorting="_customerGrid_Sorting"
VerticalAlignment="Top">
<DataGrid.Columns>
<DataGridTemplateColumn Header="Cust ID" MinWidth="90" CanUserSort="True" >
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Label Content="{Binding Path=CustID}" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTemplateColumn Header="Name" MinWidth="300" CanUserSort="True" Width="*">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Label Content="{Binding Path=Name}" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
【问题讨论】: