Получить список текущей выбранной вкладки WPF TabControl в C#

#c# #wpf #xaml #listview #tabcontrol

#c# #wpf #xaml #listview #tabcontrol

Вопрос:

Я получил TabControl, основанный на базовом C #-list Request.Params . На основе этого C #-list генерируется несколько вкладок с ListView для каждой. Эти списки основаны на именованных списках C # Values , которые являются частью Request.Params . Теперь я хочу иметь сортировку для этих списков, отсюда и события щелчка.

Чтобы реализовать сортировку, которую я хочу вызвать ListView.Items.SortDescriptions... , но я не могу этого сделать, так как я не знаю, как получить ListView, который является частью текущей выбранной вкладки, в коде позади.

ParamsTabs.SelectedItem и ParamsTabs.SelectedContent храните только фактические данные, а не элемент ListView.

 <TabControl Name="ParamsTabs" ItemsSource="{Binding Request.Params}">
    <TabControl.ItemTemplate>
        <DataTemplate>
            <TextBlock Text="{Binding Semantic}"/>
        </DataTemplate>
    </TabControl.ItemTemplate>
    <TabControl.ContentTemplate>
        <DataTemplate>
            <ListView Name="ValuesList" ItemsSource="{Binding Values}" Background="LightGray">
                <ListView.View>
                    <GridView>
                        <GridViewColumn>
                            <GridViewColumn.Header>
                                <GridViewColumnHeader Tag="Value" Click="SortValuesList">Value</GridViewColumnHeader>
                            </GridViewColumn.Header>
                            <GridViewColumn.CellTemplate>
                                <DataTemplate>
                                    <TextBlock Text="{Binding Value}"/>
                                </DataTemplate>
                            </GridViewColumn.CellTemplate>
                        </GridViewColumn>
                        <GridViewColumn Width="400">
                            <GridViewColumn.Header>
                                <GridViewColumnHeader Tag="Description" Click="SortValuesList">Description</GridViewColumnHeader>
                            </GridViewColumn.Header>
                            <GridViewColumn.CellTemplate>
                                <DataTemplate>
                                    <TextBlock Text="{Binding Description}"/>
                                </DataTemplate>
                            </GridViewColumn.CellTemplate>
                        </GridViewColumn>
                    </GridView>
                </ListView.View>
            </ListView>
        </DataTemplate>
    </TabControl.ContentTemplate>
</TabControl>
  

Я что-то упустил?

Комментарии:

1. Почему вы не сортируете Values исходную коллекцию?

2. В этом проекте есть несколько других ListViews, которые отсортированы таким образом; Мне не хотелось нарушать соглашение о сортировке ViewDescriptions.

3. Затем отсортировать в разметке XAML?

4. Вот отличная статья от Томаса Левеска. Посмотрите, и у вас будет сортировка для вашего GridView .