c# - WPF - 如何以字符串列表作为内容对 DataGridTemplateColumn 进行排序
问题描述
我有以下代码:
<DataGrid ItemsSource="{Binding FilteredLectureViewModels}">
<DataGrid.Columns>
<DataGridTextColumn Header="Name" Binding="{Binding Name}"/>
<!-- Profs -->
<DataGridTemplateColumn Header="Profs">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate DataType="viewModels:LectureViewModel">
<ItemsControl ItemsSource="{Binding Profs}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding ProfString}"/>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
我希望数据网格通过单击标题“Profs”来对其内容进行排序,就像它在默认情况下已经为标题为“Name”的 DataGridTextColumn 工作一样。我知道 DataGridTemplateColumn 的属性“SortMemberPath”,但我不知道如何在这种情况下使用它。
解决方案
在绑定中,您可以使用方括号[
]
为集合提供索引,作为绑定路径的一部分。经测试,同样的方法似乎适用于SortMemberPath
:
<DataGridTemplateColumn Header="Profs" SortMemberPath="Profs[0].ProfString">
ProfString
这将根据中第一项的属性进行排序Profs
。我不确定您为什么要根据集合中的第一项进行排序,但是这样做了。
推荐阅读
- php - 在内容 Drupal 7 中添加关于作者的视图
- go - linux平台下如何编译一个包含多个包和文件的go项目得到一个可执行文件?
- c# - 如何在 Microsoft Access 中使用 C# DLL
- html - 如何使用 css 正确发布文本?
- python - 如何在 python 中向这个哈希器添加盐?
- algorithm - A* 平均时间复杂度
- typescript - 为什么在 Svelte TS 项目中导入 Svelte TS 组件会引发并阻止编译?
- python - TensorFlow 从大型数据集中创建 tf.ragged.constant
- javascript - 如何在javascript中将数组信息转换为对象数组
- android - 如何使用 Firebase 从注册用户那里获取特定信息并将其显示在我的 Kotlin 应用中?