WPF - как отсортировать DataGridTemplateColumn со списком строк в качестве содержимого - PullRequest
0 голосов
/ 30 мая 2020

У меня есть следующий код:

    <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>

Я хочу, чтобы сетка данных отсортировала свое содержимое, щелкнув заголовок «Профс», как будто он работает для DataGridTextColumn с заголовком «Имя» уже по умолчанию. Я знаю атрибут «SortMemberPath» DataGridTemplateColumn, но не знаю, как его использовать в этой ситуации.

1 Ответ

1 голос
/ 30 мая 2020

В привязках вы можете использовать скобки [ ], чтобы указать индекс для коллекции как часть пути привязки. При тестировании этот же подход, похоже, работает для SortMemberPath:

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

. Эта сортировка основана на свойстве ProfString первого элемента в Profs. Я не уверен , почему вы хотите сортировать по первому элементу в коллекции, но это сработает.

...