首页 > 解决方案 > 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”,但我不知道如何在这种情况下使用它。

标签: c#wpfxamlmvvmdatagrid

解决方案


在绑定中,您可以使用方括号[ ]为集合提供索引,作为绑定路径的一部分。经测试,同样的方法似乎适用于SortMemberPath

<DataGridTemplateColumn Header="Profs" SortMemberPath="Profs[0].ProfString">

ProfString这将根据中第一项的属性进行排序Profs。我不确定您为什么要根据集合中的第一项进行排序,但是这样做了。


推荐阅读