I have a TabControl
with a number of TabItems based on template
.
Each TabItem has a ListView inside, and I would like to get SelectedItems
.
I use Binding for all of my ListViews, except for SelectedItems, where I use the SelectionChanged event :
private void ListView3_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
contexte.SelectedProfiles = listViewProfiles.SelectedItems.Cast<Profil>().ToList();
}
This works without problem, but when I use DataTemplate
, the name of my listView is not recognized (I guess because I cannot give a name to a DataTemplate Listview, as there are several of them).
Here is my XAML for TabControl :
<TabControl x:Name="tabControl" ItemsSource="{Binding MyFullList}" SelectedIndex="{Binding SelectedGroupResult}">
<TabControl.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<Grid>
<Grid.Style>
<Style TargetType="Grid">
<Setter Property="Focusable" Value="false"/>
</Style>
</Grid.Style>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="auto"/>
<ColumnDefinition Width="auto"/>
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="1" Text="{Binding Groupe}" Margin="3" />
</Grid>
</StackPanel>
</DataTemplate>
</TabControl.ItemTemplate>
<TabControl.ContentTemplate>
<DataTemplate>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="auto"/>
<RowDefinition Height="auto"/>
<RowDefinition Height="auto"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="auto"/>
<ColumnDefinition Width="auto"/>
</Grid.ColumnDefinitions>
<ListView x:Name="listViewProfiles" ItemsSource="{Binding ListPofils}" SelectedItem="{Binding SelectedProfile}" Grid.Row="2" Grid.ColumnSpan="2" Margin="3" Width="auto" SelectionMode="Extended" SelectionChanged="SelectionProfilChanged">
<ListView.View>
<GridView>
<GridViewColumn Header="{x:Static p:Resources.Name}" Width="auto" DisplayMemberBinding="{Binding Name}"/>
</GridView>
</ListView.View>
</ListView>
</Grid>
</DataTemplate>
</TabControl.ContentTemplate>
</TabControl>
How can I get the Selected items from the ListView?